`
feifei_lee
  • 浏览: 43973 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于联系人分组

阅读更多

联系人所有组信息:Groups.CONTENT_URI
联系人组具体信息:ContactsContract.Data.CONTENT_URI

 

Cursor cursor = getContentResolver().query(Groups.CONTENT_URI,null,null,null,null);
for (cursorAll.moveToFirst();!(cursorAll.isAfterLast());cursorAll.moveToNext()) {
组名:cursor.getString(cursor.getColumnIndex(Groups.TITLE));
组id:curso.getLong(cursor.getColumnIndex(Groups._ID));
}

新建组(名字为name):
    ContentValues values = new ContentValues();
   values.put(Groups.TITLE, name);
    getContentResolver().inser(Groups.CONTENT_URI, values);

删除组(Id为groupId):
    getContentResolver().delete(Uri.parse(Groups.CONTENT_URI +"?" +ContactsContract.CALLER_IS_SYNCADAPTER + "=true"),Groups._ID+"="+groupId,null);

给组重命名(oldName;newName;groupId):
Uri uri = ContentUris.withAppendedId(Groups.CONTENT_URI, groupId);
ContentValues values = new ContentValues();
values.put(Groups.TITLE,newName);
getContentResolver().update(uri,values,null,null);

给组添加成员(groupId,personId):
ContentValues values = new ContentValues();      
values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,personId);      
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);

给组移除成员(groupId,personId):
getContentResolver().delete(ContactsContract.Data.CONTENT_URI,ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID + "=? and " +ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + "=? and " +ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE + "=?",new String[]{"" + personId,"" + groupId,ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE});

 

注:

 1 添加成员到分组的personId是指RawContacts._ID,而不是Contacts._ID。

 2 当一个联系人名片里有几个联系人的情况时,要把每个RawContacts._ID都添加进分组。

 

这个问题很严重啊,使用Contacts._ID,碰到有合并的联系人以后,关于分组的所有操作都会错乱掉。

有什么疑问或者问题,别吝啬笔墨啊,多多交流,共同进步.....

分享到:
评论
3 楼 yinjiajin1990 2012-10-28  
总结得很不错,最近在做一个通讯录发现大部分获取群组联系人的帖子都有一个通病,就是采用Contacts._ID来获取联系人,这样是错的,应该使用Rawcontacts._ID。楼主在这里提出“使用Contacts._ID,碰到有合并的联系人以后,关于分组的所有操作都会错乱掉。”,这句话说到点了。支持~~
2 楼 yinjiajin1990 2012-10-28  
1楼的问题,我来回答一下,同一个联系人是可以属于多个组的
1 楼 小唄潴 2012-10-16  
请问一下,同个联系人加入了两个分组,可以吗

相关推荐

    联系人效果分组效果

    首先,"从a-z"的排序方式是一种常见的联系人分组方法,它基于联系人的姓氏或名字首字母进行排列。这种分组方式易于理解和操作,用户可以通过快速扫视字母表来找到目标联系人。在实现过程中,开发者通常会利用数据...

    联系人列表,索引,分组

    3. 分组管理:实现对联系人分组的创建、修改和删除功能。 4. 列表展示:使用ListView或RecyclerView展示联系人列表,每个条目可能包含姓名、电话、电子邮件等信息。 5. 搜索和过滤:添加搜索框,实时过滤和更新列表...

    联系人分组列表

    ### 联系人分组列表 #### 核心概念解析 1. **UITableView**:在iOS开发中,UITableView是用于展示列表数据的重要UI组件。它支持多种样式,包括简单的列表、分组列表等。本例中使用的正是分组样式(`...

    android 支持分组和联系人展示的一个小例子(类似QQ首页)

    总的来说,"ContactProject"是一个很好的学习资源,它涵盖了Android中关于联系人数据管理、UI设计、数据处理和性能优化等多个重要知识点。通过这个项目,开发者可以深入理解Android系统如何处理联系人数据,并掌握...

    一个联系人管理,包括分组

    为了实现分组功能,应用还需要一个额外的数据结构来存储联系人分组信息,比如群组名和包含的联系人ID列表。 2. **用户界面**:良好的用户体验是关键。ContactsManager可能具有清晰的界面布局,允许用户轻松添加、...

    Android 仿QQ联系人分组滑动到顶部固定住直到下一个分组到达顶端 源码

    在Android开发中,实现类似QQ联系人分组的交互效果是一项常见的需求,它能提供用户友好的体验。这个源码项目“Android 仿QQ联系人分组滑动到顶部固定住直到下一个分组到达顶端”正是针对这一功能的实现。在本文中,...

    CSV文件导入邮件联系人到OUTLOOK2007及分组群发方法

    2. **联系人分组**: - 要创建分组,首先在“文件”菜单下选择“新建”然后点击“文件夹”,在弹出的设置页面填入分组名称,如“IT部”或“经理级别”,并将位置设为“联系人”。 - 新建的文件夹会在联系人列表中...

    ios-管理分组和联系人.zip

    iOS系统提供了Contacts框架,它是苹果官方提供的API,用于访问和操作设备上的联系人和联系人分组。通过这个框架,开发者可以创建、读取、更新和删除联系人,以及创建、删除和管理联系人分组。 1. **Contacts框架**...

    Android仿微信联系人分组列表

    在Android开发中,创建一个类似微信联系人分组列表的应用是一项常见的需求。这个功能的核心在于使用ListView组件来展示数据,并通过巧妙的布局设计实现分组显示的效果。ListView是Android SDK中一个非常重要的视图...

    Android通讯录分组联系人更新

    - **清理联系人分组**:删除分组后,可能需要检查并清理那些失去分组归属的联系人,确保通讯录数据的整洁。 5. **更新分组数据** - **修改分组信息**:要更新已存在的分组,可以使用`ContentResolver.update()`...

    通讯录管理系统 实现显示添加、删除、查询、显示分组和联系人

    一个完善的通讯录管理系统不仅能够帮助我们有效地存储和管理大量的联系人信息,还能提供诸如添加、删除、查询、显示分组等功能,以满足不同场景下的使用需求。本文将详细探讨如何实现这样一个系统,以及它可能包含的...

    Android-仿微信通讯录的实现联系人按字母分组显示右侧添加快速索引条

    总的来说,实现“Android-仿微信通讯录的实现联系人按字母分组显示右侧添加快速索引条”涉及到Android界面设计、数据结构、排序算法以及事件监听等多个知识点,是一个综合性的开发任务。通过这样的实践,开发者可以...

    android仿联系人分组滑动特效

    在Android开发中,实现“仿联系人分组滑动特效”是一种常见的需求,尤其是在构建类似通讯录的应用时。这种特效通常涉及到对数据的分组、列表视图的自定义以及触摸滑动事件的处理。核心组件是`PinnedHeaderListView`...

    C#通讯录 c#联系人管理

    这是本人自己用C#写的一个通讯录(源代码),支持联系人照片、分组、删除、多选删除、修改联系人、修改分组、新建分组、新建联系人、筛选、高级查找(关键项变色)、增加了注册用户登陆、找回密码、密码重置、拖拽...

    Android实现类似微信联系人中的分组列表的例子

    在Android开发中,创建一个类似微信联系人分组列表的应用是一项常见的需求,它涉及到数据的组织、UI组件的使用以及事件处理等多个方面。本示例将重点讲解如何使用ExpandableListView来实现这样的功能。 首先,我们...

    Android系统联系人全特效实现,分组导航和挤压动画demo

    在Android开发中,创建具有全特效的联系人应用是一项挑战,尤其涉及到分组导航和挤压动画。本示例代码——"Android系统联系人全特效实现,分组导航和挤压动画demo",旨在帮助开发者理解如何在Android应用中实现这些...

    分组联系人.exe

    分组联系人.exe

    电信设备-通讯录中联系人的分组方法、装置和移动终端.zip

    1. **联系人分组**:联系人分组是将多个联系人依据共同特征(如家庭成员、同事、朋友等)进行分类,方便用户快速查找和管理。在通信录中,通过分组可以降低信息查找的复杂度,提高工作效率。 2. **分组方法**:分组...

    C# 联系人管理系统

    1. **联系人添加**:用户可以输入新的联系人信息,包括姓名、电话、邮箱、地址等,并可以选择保存到特定的分组或类别。 2. **联系人编辑**:用户可以修改已有的联系人信息,确保信息的准确性。 3. **联系人删除**...

    swift-一行代码获取按A~Z分组精准排序的通讯录联系人Swift版

    这个“swift-一行代码获取按A~Z分组精准排序的通讯录联系人Swift版”项目提供了一个简洁高效的方法来实现这一功能。在iOS应用中,通常会使用`Contacts`框架来访问通讯录,并通过`UITableView`或`UICollectionView`...

Global site tag (gtag.js) - Google Analytics