检测联系人是否有照片

时间:2010-07-14 20:03:41

标签: android file uri photo exists

我有一个ImageView,我正在使用Uri显示联系人图片,它总是看起来像这样:

  

内容://com.android.contacts/contacts/34/photo

我如何能够检测到这张照片是否存在,就好像它不存在那样我想要使用占位符(存储在我的drawable文件夹中)。目前它只是显示一个空白图像。

2 个答案:

答案 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。如果它没有值,则没有照片。