Как получить миниатюру контакта с Android

У меня есть адаптер listview и я пытаюсь сделать следующее в методе newView :

 @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(layout, parent, false); long contactId = Long.valueOf(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID))); String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); boolean hasPhone = Boolean.parseBoolean(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))); String thumbnailUri = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_THUMBNAIL_URI)); TextView name_text = (TextView) v.findViewById(R.id.name_entry); if (name_text != null) { name_text.setText(contactName); } name_text.setTag(new Contact(contactId, hasPhone)); ImageView thumbnail = (ImageView) v.findViewById(R.id.thumbnail); if (thumbnailUri != null) { thumbnail.setImageURI(Uri.parse(thumbnailUri)); } else { thumbnail.setImageResource(R.drawable.ic_launcher); } return v; } 

Но когда я пытаюсь разобрать Uri, который хранится в thumbnailUri, я получаю следующую ошибку:

  08-09 01:58:38.619: I/System.out(1471): resolveUri failed on bad bitmap uri: content://com.android.contacts/contacts/1/photo 

Неужели я ошибаюсь? Любая помощь будет принята с благодарностью!

Solutions Collecting From Web of "Как получить миниатюру контакта с Android"

 private Uri getPhotoUriFromID(String id) { try { Cursor cur = getContentResolver() .query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "=" + id + " AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null, null); if (cur != null) { if (!cur.moveToFirst()) { return null; // no photo } } else { return null; // error in cursor process } } catch (Exception e) { e.printStackTrace(); return null; } Uri person = ContentUris.withAppendedId( ContactsContract.Contacts.CONTENT_URI, Long.parseLong(id)); return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); } 

Это функция, в которой вам необходимо передать идентификатор контакта, и вы получите URI изображения, которое вы можете легко установить в представлении изображения.

Используйте ответ uri этой функции, такой как imageView.setImageURI (uri)

Надеюсь, что это сработает для вашего кода.