ContactsContract.Directory - Как мне вернуть фотографию? - PullRequest
0 голосов
/ 16 сентября 2011

Я пытаюсь выяснить, почему я не могу передать фотографию Uri (Uri.parse (http://url/image.png))) приложению контактов через ContactsContract.Directory

У меня есть веб-сервис, который позволяет искать в адресной книге. Одним из возвращенных полей является URL-адрес контакта, который находится на веб-сервере, который, как я подтвердил, доступен с моего Honeycomb Tablet.

Мой ContactsContract.Directory, кажется, работает безупречно, возвращая результаты, но когда я возвращаюсь как часть запроса FILTER Contacts.PHOTO_THUMBNAIL_URI с Uri.parse (http://url/image.png) результаты поиска все еще возвращаются, как и ожидалось, но я все еще см. только временный шаблон.

У URI для запроса каталога есть опция для поддерживаемой фотографии.

if (column.equals(Directory.PHOTO_SUPPORT)) {
                    row[i] = Directory.PHOTO_SUPPORT_FULL;
                }

Я перепробовал все комбинации Directory.PHOTO_SUPPORT *, и, похоже, ни одна из них не изменилась.

Моя единственная мысль - приложение контактов не поддерживает загрузку фотографий с URL-адреса. Поэтому я тоже попробовал

    File myFile  = new File("/sdcard/testuser.jpg");
row[photoUri] = Uri.fromFile(myFile);

И я проверил, что testuser.jpg был на SDCard. Это работало нормально. Однако из-за того, как осуществляется поиск в каталоге, я хотел бы загружать его на лету, а не кэшировать (пока) в sdcard.

Буду признателен за любую помощь.

1 Ответ

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

Я думаю, что нашел ответ. Похоже, что исключение было зарегистрировано в Verbose (мой logcat был установлен на Debug).Во всяком случае, был почти уверен в этом, но, похоже, нет провайдера для http uri.Выкл, чтобы создать поставщика контента, просто не уверен, как я верну изображение от поставщика контента, но выясню это.Любые советы / подсказки будут оценены и даны ответы.

09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691): java.io.FileNotFoundException: No content provider: http://domain/testimage.jpg
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:595)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:527)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at android.content.ContentResolver.openInputStream(ContentResolver.java:362)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at com.android.contacts.ContactPhotoManagerImpl$LoaderThread.loadRemotePhotos(ContactPhotoManager.java:722)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at com.android.contacts.ContactPhotoManagerImpl$LoaderThread.loadPhotosInBackground(ContactPhotoManager.java:652)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at com.android.contacts.ContactPhotoManagerImpl$LoaderThread.handleMessage(ContactPhotoManager.java:563)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at android.os.Looper.loop(Looper.java:132)
09-16 10:20:25.550: VERBOSE/ContactPhotoManager(11691):     at android.os.HandlerThread.run(HandlerThread.java:60)
...