如果没有国家代码,请使用电话号码联系显示图片?

时间:2015-03-02 12:05:50

标签: java android

无论数字是否与地址簿中的数字完全匹配,是否可以获取联系人的显示图片?

例如 - 如果保存的号码是736 --------,但来电显示+01736 --------,如何使用带扩展名的号码获取显示图片?

1 个答案:

答案 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;
    }