2017-04-30 48 views
0

给定一个电话号码,我首先找出具有此号码的联系人的LOOKUP_KEY。从那里,有没有办法用单个查询检索原始联系人列表?如何获取与特定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,然后让所有RawContacts通过CONTACT_ID

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

感谢MARMOR。由于起始点是电话号码,可以直接通过PhoneLookup查询而不是Lookup_Key直接获取联系人ID吗? ,这将为我节省一个查询(从Lookup_Key解析联系人ID)。 – user2795888

+0

是的,正是我的意思:电话号码> contact-id> raw-contacts – marmor

相关问题