ContactsContract.Contacts 查询特定帐户

ContactsContract.Contacts query for specific account

是否有有效的查询来查找特定帐户名称和类型的所有汇总联系人?

ContactsContract.Contacts table 有 IN_VISIBLE_GROUP 列,对联系人组成员身份有效。因此,如果用户为帐户选择了各种组成员身份,则会设置此列。

似乎没有任何等效的可见帐户列。但是,Android 联系人应用程序允许选择特定帐户进行查看,而无需点击 "customize" 和选择群组。这样做会更新 ContactsContract.Settings table。效果好像没有达到Contactstable.

我希望能够执行一个查询并返回一个游标,该游标具有完全正确的一组聚合(意思是来自联系人 table)联系人。这可能吗?

find all aggregate contacts for a specific account name & type

Contacts 是特定于帐户的,它们由多个 RawContacts 组合而成,每个都可以保存在不同的 Account.

您可以查询特定 Account 的所有 RawContacts:

Cursor c = cr.query(RawContacts.CONTENT_URI, 
   new String[]{ RawContacts._ID, RawContacts.CONTACT_ID, RawContacts._ID, ... },
   RawContacts.ACCOUNT_NAME + " = '" + accountName + "' AND " + RawContacts.ACCOUNT_TYPE + " = '" + accountType + "'", null, null);

如果你想要 Contacts 你可以把你在上面查询中找到的所有联系人 ID 放在一个数组中,然后在 Contacts table:

上查询
Cursor c = cr.query(Contacts.CONTENT_URI, 
   new String[]{ Contacts._ID, Contacts.DISPLAY_NAME, ... },
   Contacts._ID + " IN (" + arrayOfIds + ")", null, null);