1. 增加Group
- // create a group
- ContentValues values = new ContentValues();
- values.put(ContactsContract.Groups.TITLE, “GROUPNAME”);
- Uri uri = getContentResolver().insert(ContactsContract.Groups.CONTENT_URI, values);
其中GROUPNAME是要创建的Group的名称。
2. 删除一个Group
- // delete a group
- // 做删除标志,但未真正删除。真正的删除会在同步时自动实现
- // getContentResolver().delete(ContactsContract.Groups.CONTENT_URI, ContactsContract.Groups._ID + " = " + raw_group_id, null);
- // 真正意义上的删除
- Uri uri = ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, raw_group_id);
- Uri.Builder b = uri.buildUpon();
- b.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true");
- uri = b.build();
- getContentResolver().delete(uri, null, null);
3. 查询所有的Group
- // query all groups
- Cursor groupCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI,
- new String[]{ContactsContract.Groups.TITLE, ContactsContract.Groups._ID},
- null,
- null,
- null);
查询出所有Group的名称和ID。
4. 更改指定Group的名称
- // update a group
- ContentValues values = new ContentValues();
- values.put(ContactsContract.Groups.TITLE, "NEWGROUPTITLE");
- getContentResolver().update(ContactsContract.Groups.CONTENT_URI,
- values,
- ContactsContract.Groups._ID + " = " + raw_group_id,
- null);
5. 查询一个Group中的所有联系人
- // To query all contacts in a group
- // First, query the raw_contact_ids of all the contacts in the group
- Cursor groupContactCursor = getContentResolver().query(Data.CONTENT_URI,
- new String[]{Data.RAW_CONTACT_ID},
- Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = " + raw_group_id,
- null,
- null);
- // Second, query the corresponding name of the raw_contact_id
- while(groupContactCursor.moveToNext())
- {
- Cursor contactCursor = getContentResolver().query(Data.CONTENT_URI,
- new String[]{Data.RAW_CONTACT_ID, StructuredName.FAMILY_NAME, StructuredName.GIVEN_NAME},
- Data.MIMETYPE + "='" + StructuredName.CONTENT_ITEM_TYPE + "' AND " + Data.RAW_CONTACT_ID + "=" + groupContactCursor.getInt(0),
- null,
- null);
- contactCursor.moveToNext();
- Log.e("TestContractGroupOperationActivity", "Member name is: " + contactCursor.getString(1) + " " + contactCursor.getString(2));
- contactCursor.close();
- }
- groupContactCursor.close();
6. 从Group中删除某个联系人
- // Delete a contact from a group
- Uri uri = Data.CONTENT_URI;
- Uri.Builder b = uri.buildUpon();
- b.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true");
- uri = b.build();
- getContentResolver().delete(uri, Data.RAW_CONTACT_ID + "=" + raw_contact_id + " AND " + ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " =" + raw_group_id, null);
7. 查询某个联系人处于那几个Group中
- // First, query all the group ids that a contact is in
- Cursor groupCursor = getContentResolver().query(Data.CONTENT_URI,
- new String[]{ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID},
- ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE +"' AND " + Data.RAW_CONTACT_ID + " = " + raw_contact_id,
- null,
- null);
- // Second, get all the corresponding group names
- while(groupCursor.moveToNext())
- {
- Cursor groupNameCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI,
- new String[]{ContactsContract.Groups.TITLE},
- ContactsContract.Groups._ID + "=" + groupCursor.getInt(0),
- null,
- null);
- groupNameCursor.moveToNext();
- Log.e("Test", groupNameCursor.getString(0));
- groupNameCursor.close();
- }
- groupCursor.close();
其中raw_contact_id是联系人的ID。
需要注意的是,groupCursor中所包含的group_raw_id有可能重复,为了消除这种重复,可以将groupCursor中的内容倒入到一个Set容器中,再根据Set容器中的元素(具有唯一性的group_raw_id),查找其对应的Group的名称。
原帖 :http://blog.youkuaiyun.com/pathuang68/article/details/7179917