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


更多相关文章

  1. Android配置打包名称
  2. Android 开发中Parcel存储类型和数据容器
  3. android联系人中英文混合排序
  4. android 通过ContentResolver获得联系人数据
  5. android打开联系人的代码
  6. 实现类似Android联系人搜索功能

随机推荐

  1. Background Service in Android(安卓)Usi
  2. android ViewFlipper实现图片轮播
  3. Android版本号 API level一览表
  4. Android(安卓)GLSurfaceView模糊效果
  5. Android应用程序设置Home Screen
  6. android dialog集合
  7. android获得圆角图片
  8. Android(安卓)Add new target
  9. #android training# Graphics & Animatio
  10. Android(安卓)Getting Started