我有一个 ImageView,我正在使用 Uri 显示联系人图片,该图片总是类似于以下内容:
内容://com.android.contacts/contacts/34/photo
我如何能够检测到这张照片是否存在,就好像它不存在一样,然后我想使用占位符(存储在我的可绘制文件夹中)。目前它只显示一个空白图像。
获取联系人照片 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
. 如果它没有价值,那么就没有照片。