我想要做的是让用户选择一个联系人,然后从我的应用程序中设置相应的imageView作为联系人的照片(如果有的话)。根据我到目前为止所写的内容,我可以获取联系人照片的URI,但后来我得到了这个异常read failed: EINVAL (invalid argument)
我认为可能是因为我得到的URI是空值content://com.android.contacts/contacts/1/photo
这是一个无效的URI吗?我尝试在imageView中设置它的方式如下:
if (myUri != null){
try {
bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(myUri));
firstImage.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
;
}
如何解决这个问题?
答案 0 :(得分:1)
使用READ_CONTACTS权限,您可以执行此操作:
Uri myUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, contactId);
if (myUri != null){
try {
InputStream in = ContactsContract.Contacts
.openContactPhotoInputStream(getActivity().getContentResolver(), myUri);
bitmap = BitmapFactory.decodeStream(in);
firstImage.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
;
}