Как отобразить фотографию контакта с идентификатором контакта?
Этот код (в моем классе CustomAdapter) отображает только идентификатор контакта на основе того, кто отправил мне текстовые сообщения и помещает их в ArrayList, а затем отображает список.
У меня есть ImageView называется holder.photo
рядом с каждым идентификатором контакта. Как бы я хотел отобразить фотографию контакта в в ImageView?
String folder = "content://sms/inbox/";
Uri mSmsQueryUri = Uri.parse(folder);
messages = new ArrayList<String>();
contactID = new ArrayList<String>();
SMS = new ArrayList<String>();
try {
c = context.getContentResolver().query(mSmsQueryUri,
new String[] { "_id", "address", "date", "body" },
null, null, null);
if (c == null) {
Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri);
}
} catch (Exception e) {
//Log.e(TAG, e.getMessage());
} finally {
c.close();
}
c.moveToFirst();
while (c.moveToNext()) {
phoneNumber = c.getString(0);
contactID.add(phoneNumber);
}
holder.photo.?????
//contact will cycle through all names and display each in a listview.
holder.contact.setText(contactID.get(position);
В настоящее время мой список отображает это:
- android_icon----- Джон Доу
- android_icon----- Джейн Смит
- android_icon----- Фу Барр
1 ответ
Попробуй это..
public void getContacts(ContentResolver cr) {
Cursor phones = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
while (phones.moveToNext()) {
String name = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String contactId = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
Bitmap bitmap = loadContactPhoto(
getContentResolver(), Long.valueOf(contactId))
}
phones.close();
получить растровое изображение
public static Bitmap loadContactPhoto(ContentResolver cr, long 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);
}