2013-04-24 118 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); 
    }