2013-04-24 150 views
2

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

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

回答

1

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

因此,尽管如果照片可用,您的代码仍然有效,但由于没有对应的高分辨率文件,因此对openAssetFileDescriptor的调用将失败。

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

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