我已经搜索了完成此操作的所有方法,但均无效果,这是我的代码:

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会有所不同

10-07 19:44
查看更多