android:read gmail contact的全尺寸照片
问题描述:
我试图在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);
答
从我的阅读,这个问题很简单,因为Gmail没有同步的照片的高分辨率版本,特别是对于旧设备/ API级别。
因此,尽管如果照片可用,您的代码仍然有效,但由于没有对应的高分辨率文件,因此对openAssetFileDescriptor的调用将失败。
请参阅此issue针对Android报告(不正确?)。
答
一些如何上面这段代码为我工作在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);
}