【问题标题】:Loading contact picture via LOOKUP_KEY and openContactPhotoInputStream convenience method通过 LOOKUP_KEY 和 openContactPhotoInputStream 便捷方法加载联系人图片
【发布时间】:2011-11-30 19:40:14
【问题描述】:

我正在修改我的应用程序,以便按照 API 文档的建议使用 LOOKUP_KEY 而不是 _ID 来存储联系人信息。我遇到的唯一问题是我无法再加载联系人的照片。

有问题的代码是这个:

InputStream s = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(), contactUri);

这将返回以下错误:java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts/lookup/1424i118.2312i1220228108/photo

我用作参数的contactUri 是通过以下方式获取的:Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, contact_key);

在这个例子中,contact_key1424i118.2312i1220228108

根据 API 文档,这个辅助方法应该适用于我正在使用的 CONTENT_URICONTENT_LOOKUP_URI

有什么想法吗?谢谢。

【问题讨论】:

标签: android android-contacts contactscontract


【解决方案1】:

对于任何有类似问题的人来说,这对我有用:

public Bitmap getPhoto(Uri uri){
    Bitmap photoBitmap = null;

    String[] projection = new String[] { ContactsContract.Contacts.PHOTO_ID };

    Cursor cc = getContentResolver().query(uri, projection, null, null, null);

    if(cc.moveToFirst()) {
        final String photoId = cc.getString(cc.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
        if(photoId != null) {
            final Cursor photo = managedQuery(
                    Data.CONTENT_URI,
                    new String[] {Photo.PHOTO},
                    Data._ID + "=?",
                    new String[] {photoId},
                    null
            );

            // Convert photo blob to a bitmap
            if(photo.moveToFirst()) {
                byte[] photoBlob = photo.getBlob(photo.getColumnIndex(Photo.PHOTO));
                photoBitmap = BitmapFactory.decodeByteArray(photoBlob, 0, photoBlob.length);
            }

            photo.close();
        }

    } 
    cc.close();

    return photoBitmap;
}

【讨论】:

  • +1, 检索一张照片需要多少时间(以毫秒为单位)?,uri 你传递给这个方法的是什么?
  • 不确定照片检索的确切毫秒数,我猜这取决于手机的处理器。至于另一个问题,这是我要发送的 URI: Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, contactId);
  • 回答+1,你是对的,这取决于处理器速度。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
相关资源
最近更新 更多