Androidの联系人群组Group操作示例 首先看下源码示例,(源码最后面下载),
然后,我们看下相关基础查询使用,然后在看代码。。 1. 添加群组group
// create a groupContentValues 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);
其中raw_group_id是Group的ID,对应的是ContactsContract.Groups中的_ID字段 3. 查询所有的Group
// query all groupsCursor groupCursor = getContentResolver().query(ContactsContract.Groups.CONTENT_URI, new String[]{ContactsContract.Groups.TITLE, ContactsContract.Groups._ID}, null, null, null);
查询出所有Group的名称和ID。 4. 更改指定Group的名称
// update a groupContentValues values = new ContentValues();values.put(ContactsContract.Groups.TITLE, "NEWGROUPTITLE");getContentResolver().update(ContactsContract.Groups.CONTENT_URI, values, ContactsContract.Groups._ID + " = " + raw_group_id, null);
其中NEWGROUPTITLE是新取的Group名称,raw_group_id是Group的ID。 5. 查询一个Group中的所有联系人
// To query all contacts in a group// First, query the raw_contact_ids of all the contacts in the groupCursor 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_idwhile(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 groupUri 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);
从ID为raw_group_id的Group中,删除ID为raw_contact_id的Contact。 7. 查询某个联系人处于那几个Group中
// First, query all the group ids that a contact is inCursor 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 nameswhile(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的名称。


*相关联系人群组查询,讲解文章: 点击打开链接
* 源码下载 点击打开链接

更多相关文章

  1. Android(安卓)- 永不锁屏,开机不锁屏,删除设置中休眠时间选项
  2. Android:Debug certificate expired on DATE 解决方法
  3. 删除Android(安卓)Studio中的工作空间(project)和项目(modular)
  4. Android(安卓)中数据库查询方法 query() 中的 selectionArgs 的
  5. Android(安卓)文件操作,删除,拷贝文件等
  6. Android(安卓)activity 单手操作 滑动关闭
  7. android数据库编程----SqLiteOpenHelper的使用
  8. android通话记录的查询与删除
  9. android通过USB的MTP模式下,禁止用户在根目录有任何操作(重命名 删

随机推荐

  1. conversion to dalvik format failed wit
  2. Android USB HID设备通信controlTransfer
  3. Android的frameworks层音量控制原理分析
  4. adb (Android Debug Bridge) Android 调
  5. 共享全局数据 android
  6. Android 实现文件上传功能(upload)
  7. Android(安卓)Service 服务(三)—— bindSe
  8. 包管理系统分析
  9. Android 启动优化(一)
  10. Android使用banner实现自动手动轮播图