如何获取具有特定 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 的联系人的所有原始联系人?的主要内容,如果未能解决你的问题,请参考以下文章