通过联系人ID获取联系人的缩略图 - Android

时间:2015-03-26 23:07:21

标签: android android-imageview android-contacts

我试图获取联系人的照片(如果有照片)但是我已经注意到我选择的联系人(并且它有一个缩略图)它没有附加正确的图像,但它显示来自另一个联系人的图像 - 或根本不添加图像。 我已经检查了ID及其正确但不知何故它没有显示我正在寻找的照片?

有谁知道如何解决这个问题?

以下是我使用的代码:

Uri contactUri = ContentUris.withAppendedId(
                    ContactsContract.Contacts.CONTENT_URI, Long.parseLong(data.get(position).getContactID()));

            Uri photoUri = Uri.withAppendedPath(contactUri,
                    ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

            Cursor cursor = activity.getContentResolver()
                    .query(
                            photoUri,
                            new String[]{ContactsContract.CommonDataKinds.Photo.PHOTO},
                            null, null, null);

            if (cursor != null && cursor.moveToFirst()) {
                byte[] data = cursor.getBlob(0);
                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                holder.image.setImageBitmap(bitmap);
            }

1 个答案:

答案 0 :(得分:0)

使用此代码获取联系人ID

的联系人照片
private void retrieveContactPhoto() {

        Bitmap photo = null;

        try {
            InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(),
                    ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)));

            if (inputStream != null) {
                photo = BitmapFactory.decodeStream(inputStream);
                ImageView imageView = (ImageView) findViewById(R.id.img_contact);
                imageView.setImageBitmap(photo);
            }

            assert inputStream != null;
            inputStream.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }