我有一个ImageView,我正在使用Uri显示联系人图片,它总是看起来像这样:
内容://com.android.contacts/contacts/34/photo
我如何能够检测到这张照片是否存在,就好像它不存在那样我想要使用占位符(存储在我的drawable文件夹中)。目前它只是显示一个空白图像。
答案 0 :(得分:9)
获取联系人照片的功能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);
}
答案 1 :(得分:6)
可能使用ContactsContract.Data.PHOTO_ID
。如果它没有值,则没有照片。