Search code examples
androidcontactsandroid-2.0-eclair

Android 2.0 How to get display name and number in a contact group


I get a list of contacts in a given group id by id:

Cursor cur = ctx.managedQuery(ContactsContract.Data.CONTENT_URI,
             new String[] { GroupMembership.GROUP_ROW_ID,
        GroupMembership.CONTACT_ID },
        GroupMembership.GROUP_ROW_ID + "=" + String.valueOf(id),
        null, null);

if (cur.moveToFirst()) {
    int groupIdx = cur.getColumnIndex(GroupMembership.GROUP_ROW_ID);
    int personIdx = cur.getColumnIndex(GroupMembership.CONTACT_ID);

    do {
        if (cur.getLong(groupIdx) == id) {
            Cursor ccur = ctx.getContentResolver().query( Phone.CONTENT_URI,
                new String[] {Phone.NUMBER, Phone.TYPE,
                Phone.DISPLAY_NAME },
                Phone.CONTACT_ID +"="+ contactId, 
                      null, null); 
            Log.e("Test: Number", ccur.getString(0))
            Log.e("Test: Name", ccur.getString(2))
        }
    } while (cur.moveToNext());
}

But it seems that does not work correctly.


Solution

  • Probably you are missing the mimetype.

    String where = ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "="
                    + groupid + " AND "
                    + ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='"
                    + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "'";
    
            Cursor c = this.ctx.getContentResolver().query(
                    ContactsContract.Data.CONTENT_URI,
                    new String[] {
                            ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
                            ContactsContract.Data.DISPLAY_NAME
                    }, where, null, ContactsContract.Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC");