通过联系人 ID 获取联系人的缩略图 - Android
Get contact's thumbnail by contact's ID - Android
我正在尝试获取联系人的照片(如果有的话),但我注意到我选择的联系人(并且有缩略图)没有附加正确的图像,而是显示图像来自另一个联系人 - 或者根本不添加图像。
我已经检查了 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);
}
使用此代码获取联系人照片和联系人 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();
}
}
我正在尝试获取联系人的照片(如果有的话),但我注意到我选择的联系人(并且有缩略图)没有附加正确的图像,而是显示图像来自另一个联系人 - 或者根本不添加图像。 我已经检查了 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);
}
使用此代码获取联系人照片和联系人 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();
}
}