首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从photo_id获取photo_uri

如何从photo_id获取photo_uri
EN

Stack Overflow用户
提问于 2014-04-23 16:19:09
回答 2查看 790关注 0票数 1

我检查了地址簿,并尝试获取所有联系人的照片,这些照片都不是空的。

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

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

下面是我的问题:

代码语言:javascript
复制
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);

...
EN

回答 2

Stack Overflow用户

发布于 2014-04-23 16:24:39

试试这个:

代码语言:javascript
复制
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();
    }

和getPhoto:

代码语言:javascript
复制
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;
    }
票数 1
EN

Stack Overflow用户

发布于 2014-04-23 16:26:43

尝试下一段代码,它应该能起到作用

代码语言:javascript
复制
public Uri getPhotoUri(long contactId) {
            ContentResolver contentResolver = getContentResolver();

            try {
                Cursor cursor = contentResolver
                        .query(ContactsContract.Data.CONTENT_URI,
                                null,
                                ContactsContract.Data.CONTACT_ID
                                        + "="
                                        + contactId
                                        + " AND "

                                        + ContactsContract.Data.MIMETYPE
                                        + "='"
                                        + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
                                        + "'", null, null);

                if (cursor != null) {
                    if (!cursor.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, contactId);
            return Uri.withAppendedPath(person,
                    ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23238644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档