У меня есть ImageView, который я отображаю изображение контактов с помощью Uri, который всегда выглядит подобным этому:
content://com.android.contacts/contacts/34/photo
Как я смог бы обнаружить, существует ли эта фотография, как будто она не делает затем, я хочу использовать заполнителя вместо этого (сохраненный в моей drawable папке). В данный момент это просто показывает пустое изображение.
функция для получения uri фотографии контактов:
public Uri getPhotoUri(Integer contactid) {
Cursor photoCur = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'", null, ContactsContract.Contacts.DISPLAY_NAME+" COLLATE LOCALIZED ASC");
photoCur.moveToPosition(contactid);
Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, photoCur.getLong(photoCur.getColumnIndex(ContactsContract.Contacts._ID)));
Uri photo = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
return photo;
}
и вызов этой функции (contactimage - ImageView):
Uri contactphoto = getPhotoUri(2);
contactimage.setImageURI(contactphoto);
if (contactimage.getDrawable() == null) {
contactimage.setImageResource(R.drawable.contactplaceholder);
}
Возможно, используя ContactsContract.Data.PHOTO_ID
. Если у него нет значения, значит, фото нет.