常に次のように見えるURIを使用して連絡先の画像を表示しているImageViewがあります。
content://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
。値がない場合、写真はありません。