0

我想要做的是让用户选择一个联系人,然后从我的应用程序中将相应的 imageView 设置为联系人的照片(如果有的话)。到目前为止,我可以得到联系人照片的 URI,但后来我得到了这个异常read failed: EINVAL (invalid argument),我认为这可能是因为一个空值,尽管我得到的 URIcontent://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) { 
                ;
            } 

如何解决这个问题?

4

1 回答 1

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) { 
            ;
} 
于 2013-09-02T22:15:44.167 回答