連絡先をグループに多対多でマッピングしようとしています。
たとえば、私が持っている場合:
- ユーザー1は、グループ701、702、704に属しています。
- ユーザー2はグループに属していません
- ユーザー3はグループ702に属しています
私はこのような関係を得たいと思っています:
userID | groupID
1 | 701
1 | 702
1 | 704
3 | 702
私はこれを試しました:
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);
しかし、それはうまくいきません。GROUP_SOURCE_ID列は、どのグループのIDでもない奇妙な番号を返します。0または負の数を返すこともあります。
各グループを調べて、そのグループ内のすべての連絡先を見つけることで、このマッピングを作成できますが、これには多くのクエリが必要であり、高速を維持しようとしています(明らかに、これらのいくつかのクエリは非常に遅いです!) 。
この連絡先からグループへのマッピングを1つのクエリで取得する方法を教えてもらえますか?
ありがとう!