无论数字是否与地址簿中的数字完全匹配,是否可以获取联系人的显示图片?
例如 - 如果保存的号码是736 --------,但来电显示+01736 --------,如何使用带扩展名的号码获取显示图片?
答案 0 :(得分:0)
是的,您可以根据联系电话号码(无论采用哪种格式)获取联系人的显示图像。
如果联系人存储在设备联系人列表中并且该联系人具有该图像,则下面的方法将返回联系人的显示图像。通过带或不带国家/地区代码的联系电话。
public static Bitmap getDisplayPhoto(Context context, String contactNumber) {
contactNumber = Uri.encode(contactNumber);
int phoneContactID = -1;
Cursor contactLookupCursor = context.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, contactNumber),
new String[] { PhoneLookup.DISPLAY_NAME, PhoneLookup._ID }, null, null, null);
while (contactLookupCursor.moveToNext()) {
phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID));
}
contactLookupCursor.close();
Bitmap photo = null;
if (phoneContactID != -1) {
Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, phoneContactID);
Uri displayPhotoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.DISPLAY_PHOTO);
try {
AssetFileDescriptor fd = context.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r");
photo = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor());
} catch (IOException e) {
}
}
return photo;
}