2

我试图在 Imageview 上阅读并显示联系人的全尺寸照片。下面的代码在本地创建联系人的模拟器中运行良好。

在从 gmail 同步联系人的 Attrix 4G 上进行测试时,它没有显示完整大小的联系人。

    Uri contactUri = ContentUris.withAppendedId(
            ContactsContract.Contacts.CONTENT_URI, id);
    Uri displayPhotoUri = Uri.withAppendedPath(contactUri,
            ContactsContract.Contacts.Photo.DISPLAY_PHOTO);

    AssetFileDescriptor fd = cr.openAssetFileDescriptor(
                displayPhotoUri, "r");
        input = fd.createInputStream();
return BitmapFactory.decodeStream(input);
4

2 回答 2

1

上面的代码在 Nexus 4 上如何为我工作。

 ContentResolver cr = getContext().getContentResolver();
    PersonUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, 3347);
    Uri displayPhotoUri = Uri.withAppendedPath(PersonUri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);
     try {
        AssetFileDescriptor fd = cr.openAssetFileDescriptor(displayPhotoUri, "r");
        input = fd.createInputStream();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, PersonUri);

    if(input != null){
        showImage(mPhoto, BitmapFactory.decodeStream(input));
    }else{
        showImage(mPhoto, R.drawable.jb_picture_unknown);
    }
于 2013-08-19T21:03:00.410 回答
1

根据我的阅读,问题仅仅是因为 Gmail 没有同步照片的高分辨率版本,特别是对于旧设备/API 级别。

因此,虽然如果照片可用,您的代码将起作用,但对 openAssetFileDescriptor 的调用将失败,因为没有相应的高分辨率文件。

请参阅针对 Android 报告的此问题(不正确?)。

于 2013-06-30T23:11:08.877 回答