0

如标题所述,我想查询所有指定了电话号码的联系人,并返回一个光标,其中只包含联系人的显示名称和公司名称。我希望每个联系人只返回 1 行。

到目前为止,这是我想出的:

Cursor contactsCur = getContentResolver().query(
        ContactsContract.Data.CONTENT_URI,
        new String[] {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.CommonDataKinds.Organization.COMPANY},
        ContactsContract.Contacts.HAS_PHONE_NUMBER + " >? AND " + Contacts.Data.MIMETYPE + " =? " ,
        new String[] {"0", ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE},
        null );

这将为同时指定电话号码和公司的每个联系人返回 1 行 - 它不包括未指定公司的联系人。

我知道为什么会这样 -AND " + Contacts.Data.MIMETYPE + " =? "查询的一部分会阻止任何没有公司的联系人被返回。问题是如果没有该AND部分,每个联系人都会返回多行。

看起来这是因为ContactsContract.CommonDataKinds.Organization.COMPANY实际上是指ContactsContract.Contacts.Data.DATA1,这是一个通用字段。

对此的任何帮助将不胜感激!

4

1 回答 1

0

我最终为此使用了多个查询

于 2012-08-05T14:10:38.080 回答