Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从联系人android检索照片_Java_Android_Photo_Contact - Fatal编程技术网

Java 从联系人android检索照片

Java 从联系人android检索照片,java,android,photo,contact,Java,Android,Photo,Contact,我使用此代码从一个联系人检索照片: private Uri getPhotoUri(String idContact) { try { Cursor cur = getApplicationContext().getContentResolver().query( ContactsContract.Data.CONTENT_URI, null,

我使用此代码从一个联系人检索照片:

private Uri getPhotoUri(String idContact) {
        try {
            Cursor cur = getApplicationContext().getContentResolver().query(
                    ContactsContract.Data.CONTENT_URI,
                    null,
                    ContactsContract.Data.CONTACT_ID + "=" + idContact + " AND "
                            + ContactsContract.Data.MIMETYPE + "='"
                            + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE + "'", null,
                    null);
            if (cur != null) {
                if (!cur.moveToFirst()) {
                    return null; // no photo
                }
            } else {
                return null; // error in cursor process
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long
                .parseLong(idContact));
        return Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
    }
所以,问题是,有了这段代码,我可以检索到低分辨率的照片。 我怎样才能拍到更好的照片

也许我不应该使用CONTENT\u目录


谢谢。

此代码非常适用于获取高分辨率照片:

 Uri my_contact_Uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(id));
 InputStream photo_stream = ContactsContract.Contacts.openContactPhotoInputStream(cr, my_contact_Uri, true);
 BufferedInputStream buf = new BufferedInputStream(photo_stream);
 Bitmap my_btmp = BitmapFactory.decodeStream(buf);
 buf.close();
 return my_btmp;
另外,仅供参考,API 14之前不存在高分辨率联系人照片,因此如果您在API 13或更低版本的AVD/设备上运行它,则无法获得高分辨率照片


查看此问题:了解更多信息。

第二行中的cr是什么?一个ContentResolver对象,用于提供有关帐户的更多信息。见此帖: