private void addContactToGroup(int contactId,int groupId) { //judge whether the contact has been in the group boolean b1 = ifExistContactInGroup(contactId, groupId); if (b1) { //the contact has been in the group return; } else { ContentValues values = new ContentValues(); values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,contactId); values.put(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,groupId); values.put(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE); getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); } } private boolean ifExistContactInGroup(int contactId, int groupId) { String where = Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "' AND " + Data.DATA1 + " = '" + groupId + "' AND " + Data.RAW_CONTACT_ID + " = '" + contactId + "'"; Cursor markCursor = getContentResolver().query(Data.CONTENT_URI, new String[]{Data.DISPLAY_NAME}, where, null, null); if (markCursor.moveToFirst()) { return true; }else { return false; } }