java - 如何从 photo_id 获取 photo_uri

标签 java android bitmap contacts

我浏览通讯录并尝试获取所有不为空的联系人照片。

我使用的是 android API8,所以我无法查询 image_uri。

给定 photo_id (API 5),我如何获取照片位图?

这是我的查询:

public final static String[] PROJECTION2 = new String[] {
        ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID,
        ContactsContract.CommonDataKinds.Phone.NUMBER,
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
        ContactsContract.CommonDataKinds.Phone.PHOTO_ID
};

 public static void fillAddressBookData() {
    String sHash = null;
    String where = ContactsContract.Contacts.IN_VISIBLE_GROUP + "= ? ";
    String[] selectionArgs = new String[] {"1"};
    Cursor cursor =
        AppService
            .getAppContext()
            .getContentResolver()
            .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PROJECTION2, where,
                selectionArgs, null);

...

最佳答案

试试这个:

private void GetImageByPhoneNumber(String number)
    {
        Uri uri1 = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
                Uri.encode(number));
        Cursor test = getContentResolver().query(uri1,
                new String[] { "photo_uri" }, null, null,
                null);

        if (test.getCount() > 0) {
            test.moveToFirst();

            Uri photoUri = Uri.parse(test.getString(test
                    .getColumnIndexOrThrow("photo_uri"))));

            Bitmap image = getPhoto(context , photoUri);


        }

        test.close();
    }

并获取照片:

public static Bitmap getPhoto(Context context , Uri uri){

        Bitmap bm = null;
        try {
            bm = BitmapFactory.decodeStream(context.getContentResolver()
                    .openInputStream(uri));


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        if (bm == null) {
            bm = BitmapFactory.decodeResource(context.getResources(),
                    R.drawable.default_user_avatar);
        }
        return bm;
    }

关于java - 如何从 photo_id 获取 photo_uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23238644/

相关文章:

java - 关于访问者模式的问题(Java 示例)

java - 异常 : java. lang.IndexOutOfBoundsException : Index: 0, 大小:0

android - 将文本从 string.xml 设置为 TextView 不起作用

java - 创建位图缩略图的ArrayList

java - 如何从 Android MediaImage 以 OUTPUT_IMAGE_FORMAT_RGBA_8888 格式创建位图?

java - 具有多个服务器实例的 AppEngine JDO 丢失通过 key 获取的实体的事务更新

java - Android 按钮崩溃

java - 使用 Google 登录检索用户信息

android - Opengl es 2.0 试图将浮点值传递给 fragment 着色器 android

c# - 非托管内存泄漏