gpt4 book ai didi

java - Android Contact images to listview 适用于模拟器但不适用于设备

转载 作者:太空狗 更新时间:2023-10-29 13:37:02 25 4
gpt4 key购买 nike

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



联系 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);
如果(输入!=空){
位图照片 = BitmapFactory.decodeStream(input);
c.setContactImage(照片);
}
联系人.add(c);

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



public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder 持有人 = null;
如果(convertView == null){
holder.img = (ImageView)convertView.findViewById(R.id.imgContact);
联系人条目 = getItem(position);

如果(entry.getContactImage()!=空){
holder.img.setImageBitmap(entry.getContactImage());
}

}


静态类 ViewHolder {
TextView 名称;
TextView 编号;
图片查看img;
}

list 有以下内容:

<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))));   

最佳答案

检查您的 list 以获取读取联系人和 MinSDKVersion 值的权限。

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

如果您使用的是 Android 2.3,则 Minsdk 版本应为“9”

<uses-sdk android:minSdkVersion="9" />

关于java - Android Contact images to listview 适用于模拟器但不适用于设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com