Android联系人图片到listview适用于模拟器,但不适用于设备

时间:2012-02-28 08:55:10

标签: java android

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

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

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

清单具有以下内容:

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

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

我从联系人列表中获得的其他信息对两者都有效。有没有人有这个问题的解决方案?

怎么做:

这就是你如何调用这个函数:

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

1 个答案:

答案 0 :(得分:2)

检查您的清单是否有权阅读联系人和MinSDkVersion值。

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

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

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