ImageView.setImageURI方法没有在android上显示图像

时间:2012-02-13 12:28:06

标签: android android-imageview android-ui android-image

我正在列出与照片的联系人,但我无法显示联系人的照片。我得到照片如下:

            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没有显示图像的原因。请帮帮我。

1 个答案:

答案 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。