【问题标题】:How can I get all the raw contacts for a contact with a specific LOOKUP_KEY?如何获取具有特定 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)。

【问题讨论】:

    标签: android android-contacts android-cursor


    【解决方案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 > 原始联系人
    猜你喜欢
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多