如何获取具有特定 LOOKUP_KEY 的联系人的所有原始联系人?

Posted

技术标签:

【中文标题】如何获取具有特定 LOOKUP_KEY 的联系人的所有原始联系人?【英文标题】:How can I get all the raw contacts for a contact with a specific LOOKUP_KEY? 【发布时间】:2017-09-28 07:34:42 【问题描述】:

给定一个电话号码,我首先找出具有该号码的联系人的 LOOKUP_KEY。从那里,有没有办法通过单个查询检索原始联系人列表?

我尝试了以下方法

ContentResolver cr = context.getContentResolver();
        // Get all RawContacts associated with lookupKey
        Cursor contactCursor = cr.query(
                Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookup_key),
                new String[]ContactsContract.RawContacts._ID,
                null,
                null,
                null);

但是 contactCursor 总是包含一个条目,即使查询的合约有多个原始联系人。 老实说,我不太明白为什么上面的查询甚至返回任何内容,因为表 ContactsContract.Contacts 中没有 RawContacts 条目。我猜它只是返回这个表的 _ID 条目,即 Contact_ID(不是 RawContact 的 Id)。

【问题讨论】:

【参考方案1】:

在这种情况下不要使用LOOKUP_KEY,而是从电话号码中获取Contacts._ID,然后通过CONTACT_ID获取所有RawContacts

cr.query(RawContacts.CONTENT_URI,
    new String[] RawContacts._ID ,
    RawContacts.CONTACT_ID + "=" + theContactId,
    null,
    null);

【讨论】:

谢谢马尔默。由于起点是电话号码,直接通过PhoneLookup查询而不是Lookup_Key获取ContactId是否可以? ,这将为我节省一个查询(从 Lookup_Key 解析 theContactId)。 是的,正是我的意思:电话号码 > 联系人 ID > 原始联系人

以上是关于如何获取具有特定 LOOKUP_KEY 的联系人的所有原始联系人?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用联系人 ID 获取特定的联系电话

如何获取特定联系人的联系人姓名详细信息

如何从电话簿中获取与 android 中特定联系人相关联的所有社交帐户?

如何获取特定组的电话号码

获取属于特定组的联系人列表

Android:使用查找键管理联系人