Search code examples
androidandroid-sdk-2.1

How do I add contact to a group on Android?


I read about ContactsContract.CommonDataKinds.GroupMembership, but I can't figure out what URI use to insert to.

I have prepared this method:

public static Uri addToGroup(ContentResolver resolver, long personId,
            long groupId) {

        ContentValues values = new ContentValues();

        values.put(ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID, personId);

        values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupId);

        return resolver.insert(uri, values);//URI is not known

    }

Can someone tell me what URI to use in SDK 2.0+?


Solution

  • I found the resolution and I post it here:

    public Uri addToGroup(long personId, long groupId) {
    
        //remove if exists
        this.removeFromGroup(personId, groupId);
    
        ContentValues values = new ContentValues();
        values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
                personId);
        values.put(
                ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
                groupId);
        values
                .put(
                        ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
                        ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);
    
        return this.ctx.getContentResolver().insert(
                ContactsContract.Data.CONTENT_URI, values);
    
    }
    

    But I don't get something, why do I have to use RAW_CONTACT_ID and not CONTACT_ID, the later raises nullpointerexception.