У меня есть контакт Google, связанный с контактом Facebook (с фотографией) и контактом Skype (с фотографией).
Я выбираю скайп фото для контакта (через приложение адресной книги). В адресной книге отображается контакт с выбранной (скайп) фотографией.
Запустите мое приложение. Запросите идентификатор фотографии у ContactsContract.Contacts.CONTENT_URI по идентификатору контакта. «Загрузить» фотографию в ImageView. Все вроде хорошо - фото загружено. Завершите мое приложение.
Я выбираю фотографию на Facebook для контакта (через приложение адресной книги). В адресной книге отображается контакт с выбранной (Facebook) фотографией.
Запустите мое приложение. Снова запросить идентификатор фотографии по идентификатору контакта. Полученный идентификатор фотографии отличается от предыдущего идентификатора. «Загрузить» фотографию в ImageView. Фотография не была загружена. LogCat: "сбой relolveUri на неверном растровом изображении uri: ...". Почему ???
Некоторые части моего кода:
Cursor photoCursor = managedQuery(
ContactsContract.Contacts.CONTENT_URI,
new String[]{ ContactsContract.Contacts.PHOTO_ID },
ContactsContract.Contacts._ID + "=?",
new String[]{ contactId },
null);
String photoId = photoCursor.getString(photoCursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
Uri photoUri = Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, photoIdByContatId);
ImageView imageView = (ImageView)findViewById(R.id.photo);
imageView.setImageURI(photoUri);