В моем приложении у меня есть ListView контактов с основной информацией (имя, номер телефона), а также изображение контакта, очень похожее на сборщик контактов Android по умолчанию.Если у контакта нет изображения, он отображает значок приложения на своем месте.Однако я хотел бы использовать изображение силуэта по умолчанию, которое вместо этого использует средство выбора контактов.У меня вопрос, как я могу получить доступ к этому изображению и использовать его в моем приложении?Вот раздел моего кода, который загружает изображение контакта:
Contact c = new Contact();
final String[] projection = new String[] {
Contacts.DISPLAY_NAME, // the name of the contact
Contacts.PHOTO_ID // the ID of the column in the data table for the image
};
final Cursor contact = getContentResolver().query(
Contacts.CONTENT_URI,
projection,
Contacts._ID + "=?", // filter entries on the basis of the contact id
new String[] {String.valueOf(contactId)}, // the parameter which the contact id column is compared to
null
);
if(contact.moveToFirst()) {
final String name = contact.getString(
contact.getColumnIndex(Contacts.DISPLAY_NAME));
final String photoId = contact.getString(
contact.getColumnIndex(Contacts.PHOTO_ID));
// Get photo data for this contact
if(photoId != null) {
final Cursor photo = managedQuery(
Data.CONTENT_URI,
new String[] {Photo.PHOTO}, // column for the photo blob
Data._ID + "=?", // select row by id
new String[] {photoId}, // filter by photoId
null
);
// Convert photo blob to a bitmap
if(photo.moveToFirst()) {
byte[] photoBlob = photo.getBlob(
photo.getColumnIndex(Photo.PHOTO));
final Bitmap photoBitmap =
BitmapFactory.decodeByteArray(photoBlob, 0, photoBlob.length);
c.setPhoto(photoBitmap);
}
}
c.setName(name);
Вот код в моем классе ContactAdapter, который связывает ImageView с фотографией контактов:
ImageView photo = (ImageView) v.findViewById(R.id.contact_photo);
if(photo != null) {
if(c.hasPhoto()) photo.setImageBitmap(c.getPhoto());
else photo.setImageResource(R.drawable.app_icon);
}