Получить список контактов, принадлежащих определенной группе

Кто-нибудь знает, как получить список контактов, принадлежащих к одной определенной группе в Android?

Мне нужно что-то вроде этого:

Select * from contacts where group_id = "1234" 

Я могу получить список всех контактов ИЛИ всех групп, используя что-то вроде этого:

 Cursor groupCursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); final ArrayList<String> contacts = new ArrayList<String>(); while(groupCursor.moveToNext()) { String name = groupCursor.getString(groupCursor.getColumnIndex(ContactsContract.Constacts.DisplayName )); contacts.add(name); } 

Solutions Collecting From Web of "Получить список контактов, принадлежащих определенной группе"

Это то, что я использую, и он отлично работает для меня

 Uri groupURI = ContactsContract.Data.CONTENT_URI; String[] projection = new String[]{ ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID , ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID}; Cursor c = managedQuery(groupURI, projection, ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID+"="+groupID, null,null); 

Для этого требуется, чтобы у вас уже был идентификатор группы, и это можно найти, запросив ContactsContract.Groups

 public void getSampleContactList(int groupID) { contactList = new ArrayList<ConatctData>(); Uri groupURI = ContactsContract.Data.CONTENT_URI; String[] projection = new String[] { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID }; Cursor c = getContentResolver().query( groupURI, projection, ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=" + groupID, null, null); while (c.moveToNext()) { String id = c .getString(c .getColumnIndex(ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID)); Cursor pCur = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null); while (pCur.moveToNext()) { ConatctData data = new ConatctData(); data.name = pCur .getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); data.phone = pCur .getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); contactList.add(data); } pCur.close(); } } class ConatctData { String phone, name; } 

Надеюсь, это поможет вам найти контакт. По идентификатору группы.

  void getlistofcontacts( long groupId ) { String[] cProjection = { Contacts.DISPLAY_NAME, GroupMembership.CONTACT_ID }; Cursor groupCursor = getContentResolver().query( Data.CONTENT_URI, cProjection, CommonDataKinds.GroupMembership.GROUP_ROW_ID + "= ?" + " AND " + ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'", new String[] { String.valueOf(groupId) }, null); if (groupCursor != null && groupCursor.moveToFirst()) { //Toast.makeText(this,"if",1000).show(); do { int nameCoumnIndex = groupCursor.getColumnIndex(Phone.DISPLAY_NAME); String name = groupCursor.getString(nameCoumnIndex); long contactId = groupCursor.getLong(groupCursor.getColumnIndex(GroupMembership.CONTACT_ID)); Cursor numberCursor = getContentResolver().query(Phone.CONTENT_URI, new String[] { Phone.NUMBER }, Phone.CONTACT_ID + "=" + contactId, null, null); if (numberCursor.moveToFirst()) { int numberColumnIndex = numberCursor.getColumnIndex(Phone.NUMBER); do { String phoneNumber = numberCursor.getString(numberColumnIndex); Toast.makeText(this,name+phoneNumber,1000).show(); } while (numberCursor.moveToNext()); numberCursor.close(); } else { Toast.makeText(this,"no contact are there",1000).show(); } } while (groupCursor.moveToNext()); groupCursor.close(); } else { Toast.makeText(this,"no such group exists",1000).show(); } } 

И вызовите эту функцию из того места, где вы хотите