gpt4 book ai didi

android - 通过 LOOKUP_KEY 和 openContactPhotoInputStream 便捷方法加载联系人图片

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:34 25 4
gpt4 key购买 nike

我正在修改我的应用程序以使用 LOOKUP_KEY 而不是 API 文档建议的 _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

有什么想法吗?谢谢。

最佳答案

对于有类似问题的人,这对我有用:

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;
}

关于android - 通过 LOOKUP_KEY 和 openContactPhotoInputStream 便捷方法加载联系人图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8331894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com