Как правильно получить фото контакта? - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть контакт 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);

1 Ответ

0 голосов
/ 08 сентября 2011

попробуйте,

 Cursor photoCursor = managedQuery(

                new String[]{ContactsContract.Contacts._ID + "=?", 
                String.valueOf(ContactsContract.Contacts.Photo.MIMETYPE+ "=?")},
               new String[]{contactId, 
String.valueOf(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) }
null);
...