【问题标题】:Honeycomb ContactsContract.Directory - Display photo in User DetailsHoneycomb ContactsContract.Directory - 在用户详细信息中显示照片
【发布时间】: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


    【解决方案1】:

    所以我可以对结果有所了解。显然,将项目添加到返回的光标的顺序确实很重要。我将光标中的 Photo mime type 行移动到任何详细信息(例如电话号码)之前,然后它开始工作。希望这将有助于其他人在一个下午拔头发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多