我已经搜索了完成此操作的所有方法,但均无效果,这是我的代码:
public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
Uri uri = ContentUris.withAppendedId(
ContactsContract.Contacts.CONTENT_URI, id);
InputStream input = ContactsContract.Contacts
.openContactPhotoInputStream(cr, uri);
// InputStream input = ContactsContract.Contacts.Photo
if (input == null) {
return null;
}
return BitmapFactory.decodeStream(input);
}
我有
<uses-permission android:name="android.permission.READ_CONTACTS" />
在我的清单上。花了两天时间,这可能真的很愚蠢,但我找不到它。
最佳答案
很奇怪,我能够通过使用照片解析的URI(删除了/ photo)来使其工作:
photoURIs = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.PHOTO_URI));
photoURIs = photoURIs.substring(0, photoURIs.length() - 6); // remove /photo
photoURI = Uri.parse(photoURIs);
图片URI:content://com.android.contacts/contacts/107/photo
内容URI:content://com.android.contacts/contacts/501
我仍然不明白为什么ID会有所不同