Honeycomb ContactsContract.Directory - Отображение фотографии в данных пользователя - PullRequest
0 голосов
/ 16 сентября 2011

Мне удалось получить 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);
    }

1 Ответ

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

Так что я могу пролить свет на результаты.Очевидно, порядок, в котором вы добавляете свои предметы в курсор, который вы возвращаете, действительно имеет значение.Я переместил строку типа «фото-пантомима» в моем курсоре перед любой деталью (например, номером телефона), и затем она начала работать. Надеюсь, это поможет кому-то еще вырвать волосы на полдня.

...