Android联系人图片在模拟器上可以显示在列表视图中,但在设备上无法显示。

3
我使用以下代码获取联系人图片:

Contact c = new Contact("", "", "", null);
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,pCur.getLong(pCur.getColumnIndex(Contacts._ID)));

InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
                            if (input != null) {
                                Bitmap photo = BitmapFactory.decodeStream(input);
                                c.setContactImage(photo);
                            }                           
contacts.add(c);

我在适配器类中使用以下代码将联系信息添加到视图中:

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null) {
holder.img = (ImageView)convertView.findViewById(R.id.imgContact);
Contact entry = getItem(position);

if(entry.getContactImage()!=null){
     holder.img.setImageBitmap(entry.getContactImage());
}

}


static class ViewHolder {
    TextView name;
    TextView number;
    ImageView img;
}

manifest文件中包含以下内容:

<uses-sdk android:minSdkVersion="9" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

这在模拟器上运行得很完美,但是当我在我的Android设备上测试时,它不起作用。 我以相同的方式将图像添加到了我的联系人中,模拟器和设备都在2.3上,设备是HTC sensation XL。

我从我的联系人列表中获取的其他信息在两者上都可以正常工作。 有没有人对这个问题有解决方案?

如何实现:

public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
            Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
            InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
            if (input == null) {
                return null;
           }
           return BitmapFactory.decodeStream(input);

        }

这是如何调用函数的:

c.setContactImage(loadContactPhoto(cr, pCur.getLong(pCur.getColumnIndex(CommonDataKinds.Photo.CONTACT_ID))));   
1个回答

2

检查您的清单文件以获取读取联系人和MinSDkVersion值的权限。

  <uses-permission android:name="android.permission.READ_CONTACTS"/>

如果您使用的是Android 2.3,则Minsdk版本应为“9”。
<uses-sdk android:minSdkVersion="9" />

请查看以下链接: https://dev59.com/c1TTa4cB1Zd3GeqPxPN7 http://stackoverflow.com/questions/3829601/android-load-contact-photos-to-a-list - John
已经添加了权限,忘记将其添加到帖子中。 - Speedy Codezales
发现了如何做到这一点,如果有人遇到同样的问题,我会将其添加到原始帖子中 :) - Speedy Codezales

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接