Honeycomb ContactsContract.Directory - отображать фото в деталях пользователя

Мне удалось заставить ContactsContact.Directory работать по большей части (http://stackoverflow.com/questions/7436969/contactscontract-directory-how-do-i-return-a-photo) и загружать фотографии для поиска эскизы результатов. Я также могу просмотреть контактную информацию из LOOKUP URI. Но я не могу в контактных данных подтянуть фото пользователя.

Мои данные не находятся в базе данных, но все это из запроса HTTPS REST.

Чтобы обойти изображение, которое не является локальным, я создал второго поставщика контента, который просто принимает URI, анализирует параметр (url) и загружает изображение (если оно еще не кэшировано на SD-карте) путем переопределения openFile (http: // stackoverflow.com/questions/3883211/how-to-store-large-blobs-in-an-android-content-provider). Таким образом, когда я передаю 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);
    }

person Chrispix    schedule 16.09.2011    source источник


Ответы (1)


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

person Chrispix    schedule 16.09.2011