Android中对Group的各种操作示例代码

1.  增加Group

[java]  view plain copy
  1. // create a group  
  2. ContentValues values = new ContentValues();  
  3. values.put(ContactsContract.Groups.TITLE, “GROUPNAME”);  
  4. Uri uri = getContentResolver().insert(ContactsContract.Groups.CONTENT_URI, values);  

其中GROUPNAME是要创建的Group的名称。


2. 删除一个Group

[java]  view plain copy
  1. // delete a group  
  2. // 做删除标志,但未真正删除。真正的删除会在同步时自动实现  
  3. // getContentResolver().delete(ContactsContract.Groups.CONTENT_URI, ContactsContract.Groups._ID + " = " + raw_group_id, null);  
  4.       
  5. // 真正意义上的删除  
  6. Uri uri = ContentUris.withAppendedId(ContactsContract.Groups.CONTENT_URI, raw_group_id);  
  7. Uri.Builder b = uri.buildUpon();  
  8. b.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true");  
  9. uri = b.build();  
  10. getContentResolver().delete(uri, nullnull);  
其中raw_group_id是Group的ID,对应的是ContactsContract.Groups中的_ID字段。


3. 查询所有的Group

[java]  view plain copy
  1. // query all groups  
  2. Cursor groupCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI,   
  3.     new String[]{ContactsContract.Groups.TITLE, ContactsContract.Groups._ID},   
  4.     null,   
  5.     null,   
  6.     null);  

查询出所有Group的名称和ID。


4. 更改指定Group的名称

[java]  view plain copy
  1. // update a group  
  2. ContentValues values = new ContentValues();  
  3. values.put(ContactsContract.Groups.TITLE, "NEWGROUPTITLE");  
  4. getContentResolver().update(ContactsContract.Groups.CONTENT_URI,   
  5.     values,   
  6.     ContactsContract.Groups._ID + " = " + raw_group_id,   
  7.     null);  
其中NEWGROUPTITLE是新取的Group名称,raw_group_id是Group的ID。


5. 查询一个Group中的所有联系人

[java]  view plain copy
  1. // To query all contacts in a group  
  2.   
  3. // First, query the raw_contact_ids of all the contacts in the group  
  4. Cursor groupContactCursor = getContentResolver().query(Data.CONTENT_URI,   
  5.     new String[]{Data.RAW_CONTACT_ID},   
  6.     Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " = " + raw_group_id,   
  7.     null,   
  8.     null);  
  9.   
  10. // Second, query the corresponding name of the raw_contact_id  
  11. while(groupContactCursor.moveToNext())  
  12. {  
  13.     Cursor contactCursor = getContentResolver().query(Data.CONTENT_URI,   
  14.     new String[]{Data.RAW_CONTACT_ID, StructuredName.FAMILY_NAME, StructuredName.GIVEN_NAME},   
  15.     Data.MIMETYPE + "='" + StructuredName.CONTENT_ITEM_TYPE + "' AND " + Data.RAW_CONTACT_ID + "=" + groupContactCursor.getInt(0),   
  16.     null,   
  17.     null);  
  18.     contactCursor.moveToNext();  
  19.     Log.e("TestContractGroupOperationActivity""Member name is: " + contactCursor.getString(1) + " " + contactCursor.getString(2));  
  20.     contactCursor.close();  
  21. }  
  22. groupContactCursor.close();  

6. 从Group中删除某个联系人

[java]  view plain copy
  1. // Delete a contact from a group  
  2. Uri uri = Data.CONTENT_URI;  
  3. Uri.Builder b = uri.buildUpon();  
  4. b.appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true");  
  5. uri = b.build();  
  6.               
  7. getContentResolver().delete(uri, Data.RAW_CONTACT_ID + "=" + raw_contact_id + " AND " + ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + " =" + raw_group_id, null);  
从ID为raw_group_id的Group中,删除ID为raw_contact_id的Contact。


7. 查询某个联系人处于那几个Group中

[java]  view plain copy
  1. // First, query all the group ids that a contact is in  
  2. Cursor groupCursor = getContentResolver().query(Data.CONTENT_URI,   
  3.     new String[]{ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID},   
  4.     ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "='" + ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE +"' AND " + Data.RAW_CONTACT_ID + " = " + raw_contact_id,   
  5.     null,   
  6.     null);  
  7.               
  8. // Second, get all the corresponding group names  
  9. while(groupCursor.moveToNext())  
  10. {  
  11.     Cursor groupNameCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI,   
  12.         new String[]{ContactsContract.Groups.TITLE},   
  13.         ContactsContract.Groups._ID + "=" + groupCursor.getInt(0),   
  14.         null,   
  15.         null);  
  16.     groupNameCursor.moveToNext();  
  17.     Log.e("Test", groupNameCursor.getString(0));  
  18.     groupNameCursor.close();  
  19. }  
  20. groupCursor.close();  

其中raw_contact_id是联系人的ID。

需要注意的是,groupCursor中所包含的group_raw_id有可能重复,为了消除这种重复,可以将groupCursor中的内容倒入到一个Set容器中,再根据Set容器中的元素(具有唯一性的group_raw_id),查找其对应的Group的名称。


原帖 :http://blog.csdn.net/pathuang68/article/details/7179917


你可能感兴趣的:(android)