包含姓名和图片 URI 的联系人查询

发布于 2024-08-28 04:04:11 字数 203 浏览 8 评论 0原文

我找不到可以在联系人 API 的 API 2.0 中为我提供联系人图像的 URI 和显示名称的单个查询。

目前,据我所知,我可以通过联系人的 _ID 创建一个 URI,但我没有看到任何可以在数据或联系人的投影中使用的行名称来获取我需要的所有内容。

(我指的是在android SDK V5及以上版本上使用联系人API的API 2)

10x。

I couldn't find a single query that would give me in API 2.0 of the contacts API the URI of the contact's image and the display name.

For now as far as i know i can create a URI by having the contact's _ID , but i didn't see any row name that i can use in the projection of Data or Contact to get all that i need.

(i refer to using API 2 of the contacts API on android SDK V5 and above )

10x.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

漫漫岁月 2024-09-04 04:04:11

如果 getId() 标识的联系人不存在,则此方法返回照片 Uri 或 null

public Uri getPhotoUri() {
        Uri person = ContentUris.withAppendedId(
                ContactsContract.Contacts.CONTENT_URI, Long.parseLong(getId()));
        Uri photo = Uri.withAppendedPath(person,
                ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

        Cursor cur = this.ctx
                .getContentResolver()
                .query(
                        ContactsContract.Data.CONTENT_URI,
                        null,
                        ContactsContract.Data.CONTACT_ID
                                + "="
                                + this.getId()
                                + " 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
        }
        return photo;
    }

如果您向 Cursor 添加投影以返回 ContactsContract.Data.CONTACT_ID 和 ContactsContract.Data.DISPLAY_NAME,可能最终会得到一个已设置照片的联系人列表。 (并非所有联系人)。然后,对于每个联系人,您可以像方法开头那样计算照片的 Uri。

This method returns the photo Uri or null if does not exists for a contact identified by getId()

public Uri getPhotoUri() {
        Uri person = ContentUris.withAppendedId(
                ContactsContract.Contacts.CONTENT_URI, Long.parseLong(getId()));
        Uri photo = Uri.withAppendedPath(person,
                ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

        Cursor cur = this.ctx
                .getContentResolver()
                .query(
                        ContactsContract.Data.CONTENT_URI,
                        null,
                        ContactsContract.Data.CONTACT_ID
                                + "="
                                + this.getId()
                                + " 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
        }
        return photo;
    }

If you add a projection to the Cursor to return ContactsContract.Data.CONTACT_ID, and ContactsContract.Data.DISPLAY_NAME, probably you will end up having a list of contacts that have photo set. (not all of the contacts). Then for each contact you can compute the Uri of the photo like in the beginning of the method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文