gpt4 book ai didi

android - 提取联系人的照片

转载 作者:太空狗 更新时间:2023-10-29 13:40:25 26 4
gpt4 key购买 nike

啊,这里的另一种情况应该很简单,但事实证明它非常耗时且痛苦。

我正在使用它来查询联系人提供程序:

private Cursor getContacts(){
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_ID
};
......
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}

这工作正常并检索联系人姓名,并且在少数联系人上它显示 PHOTO_ID 字段的数字 ID,我假设它是我请求的 PHOTO_ID。但是后来我将该 ID 插入此方法以提取位图,它在每个联系人上都失败并且流每次都是空的。我正在针对一组联系人进行测试,其中包括一些带有 Android 联系人照片的联系人(我知道从 Facebook 联系人中提取照片存在一些问题)。

private Bitmap loadContactPhoto(long id) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, uri);
if (input == null) return null;
Bitmap bitmap = BitmapFactory.decodeStream(input);
return bitmap;
}

我错过了什么?

最佳答案

openContactPhotoInputStream() 获取联系人的 uri,尝试使用 ContactsContract.Contacts._ID 列而不是 PHOTO_ID 列调用它,您应该会看到更好的结果。

这里有一堆相关的讨论和一些代码可以查看:

How do I load a contact Photo?

请注意,在某些情况下,您会在 native 通讯录应用中看到无法通过内容解析器加载的照片。一些同步信息,例如 Facebook,被标记为仅供联系人应用程序本身使用,不会导出到其他应用程序:-(

但是,使用 contactUri 应该至少可以解决您的一些问题。

关于android - 提取联系人的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497169/

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