在我的应用程序中,我有一个联系人列表视图,其中包含基本信息(姓名,电话号码)以及联系人图像,与默认的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);
}
答案 0 :(得分:3)
Android中实际使用了3种不同的图像。您可以在模拟器附带的资源的drawable文件夹中找到它们,也可以从这里下载它们: