Я пытаюсь сделать сопоставление контактов для групп "много-ко-многим".
Например, если у меня есть:
- Пользователь 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 возвращает странные числа, которые не являются идентификаторами любых групп. Иногда он даже возвращает 0 или отрицательное число.
Я мог бы построить это отображение, пройдя через каждую группу и найдя все контакты в этой группе, но это потребует много запросов, и я стараюсь оставаться на месте (по-видимому, просто эти несколько запросов медленно!).
Может ли кто-нибудь сказать мне, как я могу получить это сопоставление контактов между группами в одном запросе?
Спасибо!