android:阅读gmail contact的全尺寸照片

时间:2013-04-24 06:21:21

标签: android photo contact

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

在Attrix 4G上进行测试时,其中有来自gmail的联系人,它不会显示完整大小的联系人。

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

2 个答案:

答案 0 :(得分:1)

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

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

请参阅针对Android报告的此issue(错误?)。

答案 1 :(得分: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);
    }