Код, который вы дали, должен иметь доступ только к фотографии по умолчанию.Кроме того, вы должны добавить идентификатор контакта к этому URI, а не идентификатор фотографии (при условии, что вы используете идентификатор фотографии из таблицы данных).
Если есть несколько фотографий, вы можете попробовать получить к ним доступ непосредственно из таблицы данных.Вам нужно будет проанализировать курсор базы данных и вручную преобразовать необработанные байтовые данные в растровое изображение, как показано ниже:
String[] projection = {ContactsContract.CommonDataKinds.Photo.PHOTO};
Uri uri = Uri. ContactsContract.Data.CONTENT_URI;
String where = ContactsContract.Data.MIMETYPE
+ "=" + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + " AND "
+ ContactsContract.Data.CONTACT_ID + " = " + mContactId;
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
if(cursor!=null&&cursor.moveToFirst()){
do{
byte[] photoData = photoCursor.getBlob(0);
Bitmap photo = BitmapFactory.decodeByteArray(photoData, 0,
photoData.length, null);
//Do whatever with your photo here...
}while(cursor.moveToNext());
}
Вы хотите, чтобы mContactId соответствовал контакту, для которого вы хотите получить фотографии.
Если вы хотите ограничить только фотографии в Facebook, вам нужно будет использовать ContactsContract.Data.RAW_CONTACT_ID, который вы должны получить из таблицы RawContacts, используя свой идентификатор контакта и фильтр на основе учетной записи Facebook (при условии, что вы знаете, какую учетную запись вы ищете ... это может варьироваться в зависимости от реализации поставщика синхронизации ...)