我正在尝试将联系人的多对多映射到组.
例如,如果我有:
我希望得到一个看起来像这样的关系:
userID | groupID
1 | 701
1 | 702
1 | 704
3 | 702
Run Code Online (Sandbox Code Playgroud)
我试过这个:
Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, new String[] {
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID,
ContactsContract.CommonDataKinds.GroupMembership.GROUP_SOURCE_ID
}, null, null, null);
Run Code Online (Sandbox Code Playgroud)
但这并不是很有效.GROUP_SOURCE_ID列返回不是任何组ID的奇怪数字.有时甚至会返回0或负数.
我可以通过浏览每个组来构建这个映射,然后查找该组中的所有联系人,但这会需要很多查询,而我正试图保持快速(显然,只是那些少量查询非常慢!) .
谁能告诉我如何在一个查询中获得这种联系人到组的映射?
谢谢!
Sre*_*n R 13
Cursor dataCursor = getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
new String[]{
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.DATA1
},
ContactsContract.Data.MIMETYPE + "=?",
new String[]{ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE}, null
);
Run Code Online (Sandbox Code Playgroud)
通过使用此dataCursor您将得到contact_id与group_id在接触数据库中的所有联系人.
Cursor groupCursor = getContentResolver().query(
ContactsContract.Groups.CONTENT_URI,
new String[]{
ContactsContract.Groups._ID,
ContactsContract.Groups.TITLE
}, null, null, null
);
Run Code Online (Sandbox Code Playgroud)
通过使用此groupCursor您将得到group_id与group_title在联系人数据库中的所有群体.
因此,如果您希望获得与第一个相关联的所有组contact_id,请dataCursor使用合适的select语句.使用dataCursor你可以得到所有group_id相关的contact_id.现在使用groupCursor您可以获得与该特定联系人相关的所有组的信息.
| 归档时间: |
|
| 查看次数: |
6830 次 |
| 最近记录: |