【发布时间】:2023-03-05 01:43:01
【问题描述】:
我已经设法让 ContactsContact.Directory 大部分工作(http://stackoverflow.com/questions/7436969/contactscontract-directory-how-do-i-return-a-photo),并加载照片用于搜索结果缩略图。我还可以从 LOOKUP URI 查看联系方式。但我无法调出联系方式中的用户照片。
我的数据不在数据库中,而是全部来自 HTTPS REST 查询。
为了避免图像不是本地的,我创建了第二个内容提供程序,它只接受一个 URI,解析一个参数 (url) 并通过覆盖 openFile (http ://stackoverflow.com/questions/3883211/how-to-store-large-blob-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);
}
【问题讨论】:
标签: android directory contacts android-3.0-honeycomb photo