获取属于特定组的联系人列表

use*_*740 8 android list contacts android-contacts

有人知道如何获取属于Android中1个特定群组的联系人列表吗?

我需要这样的东西:

Select * from contacts where group_id = "1234"
Run Code Online (Sandbox Code Playgroud)

我可以使用以下内容获取所有联系人或所有组的列表:

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);
}
Run Code Online (Sandbox Code Playgroud)

DMc*_*P89 7

这是我使用的,它对我来说很好

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);
Run Code Online (Sandbox Code Playgroud)

这要求您已经拥有组ID,并且可以通过查询ContactsContract.Groups找到它

  • 我认为这有一个错误.例如,如果您的组的groupID为"15".然后,如果您创建名称="15"的联系人,它将在光标中列出!这是因为您的查询仅检查GROUP_ROW_ID = groupID,这意味着:数据表中的data1 = 15.您还应该检查数据表中的行是否与组成员关系有关:**ContactsContract.Data.MIMETYPE +"="+"'"+ ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE** (2认同)

Bra*_*dey 6

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;
    }
Run Code Online (Sandbox Code Playgroud)

希望这会帮助您找到联系人根据组ID.