8

常に次のように見えるURIを使用して連絡先の画像を表示しているImageViewがあります。

content://com.android.contacts/contacts/34/photo

この写真が存在するかどうかをどのように検出できますか。存在しない場合は、代わりにプレースホルダーを使用します(ドローアブルフォルダーに保存されています)。現時点では、空白の画像が表示されています。

4

2 に答える 2

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);
}
于 2010-08-18T17:56:28.907 に答える
6

おそらくを使用してContactsContract.Data.PHOTO_ID。値がない場合、写真はありません。

于 2010-08-18T03:34:27.240 に答える