我正在列出与照片的联系人,但我无法显示联系人的照片。我得到照片如下:
ContentResolver cr = getContentResolver();
// Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,null, null,null );
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
photo_id = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
Log.e("name", name);
Log.e("Photo_id", ""+photo_id);
photo = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, photo_id);
Log.e("URI", ""+photo);
image.setImageURI(photo); // Does not shown image.
...
}
}
样本uri(在日志中打印):
内容://com.android.contacts/contacts/52
我不知道uri没有显示图像的原因。请帮帮我。
答案 0 :(得分:1)
我使用位图解决了我的问题。我不使用imageView.setImageURI。所以这是使用以下代码而不是setImageURI。
private Bitmap loadContactPhoto(ContentResolver cr, int 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);
}
此处id是联系人ID,而不是联系人的照片ID。