final boolean IS_HONEYCOMB = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
String phoneNumber = "+1 416 385 7805";
ContentResolver contentResolver = context.getContentResolver();
Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.LOOKUP_KEY,
IS_HONEYCOMB ? ContactsContract.Contacts.PHOTO_THUMBNAIL_URI : ContactsContract.Contacts._ID,
};
Cursor cursor =
contentResolver.query(
uri,
projection,
null,
null,
null);
if (cursor != null && cursor.moveToNext()) {
long contactId = cursor.getLong(0);
String lookupKey = cursor.getString(1);
String thumbnailUri = cursor.getString(2);
cursor.close();
}
Так что теперь, если SDK сотовый или выше, у вас есть миниатюра Uri контакта.
Или вы можете создать URI поиска следующим образом:
Uri uri = ContactsContract.Contacts.getLookupUri(contactId, lookupKey);
P.S. Если вы уже знаете идентификатор контакта и / или ключ поиска , вы можете создать Uri из строки:
поиск: content://com.android.contacts/contacts/lookup/{lookup key}/{contact id}
Миниатюра: content://com.android.contacts/contacts/{contact id}/photo
Так что лучше кэшировать эти значения.