Мне удалось получить ContactsContact.Directory, работающий по большей части (/5684427/contactscontract-directory-kak-mne-vernut-fotografiy),, и загружать фотографии для миниатюр результатов поиска. Я также могу просмотреть контактную информацию из URI LOOKUP. Но я не могу вытащитьфотография пользователя в контактной информации.
Мои данные не находятся в базе данных, а все из запроса HTTPS REST.
Чтобы обойти изображение не локально, я создалвторой поставщик контента, который просто берет URI, анализирует параметр (url) и загружает изображение (если оно еще не было кэшировано на SD-карте) путем переопределения openFile (/3775892/kak-hranit-bolshie-kapli-v-postavschike-kontenta-android). Таким образом, когда я передаю URI как PHOTO_THUMBNAIL_URI
Это прекрасно работает и довольно быстро отображает изображения в разделе результатов контактов. Моя проблема в том, что я не могу загрузить фотографию на экране сведений о контакте.
Я понимаю, что это делаетВторой запрос к моему провайдеру каталога для LOOKUP, я анализирую все поля, хотя он запрашивает только PHOTO_URI, а не PHOTO_THUMBNAIL_URI, ничего страшного, так как я передаю тот же URI своему провайдеру контента ... Но на этот раз он не работает должным образом, так как он даже не пытается поразить моего провайдера фотографий.
Затем я решил попытаться просто выполнить локальный анализ и загрузку данных фотографии и включить данные Byte [] в качестве PHOTO (Data15) в ответ на поиск, но это тоже не работает.
Любая помощь будет принята с благодарностью.
static void addPhotoRow(MatrixCursor cursor, UdsProjection udsProjection, long contactId,
String lookupKey, String accountName, String displayName, String photoUri) {
UdsContactRow r = new UdsContactRow(
udsProjection, contactId, lookupKey, accountName, displayName);
r.put(Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
r.put(Photo.PHOTO_ID, photoUri);
//r.put(Photo.PHOTO, getPhotoBytes(photoUri));
cursor.addRow(r.getRow());
Log.e("TAG","Adding photo row " + photoUri);
}