通过ContentResolver调用系统URI实现的通讯录示例

Android的四大组件之一,ContentProvider,分为两个部分:一是数据组织工具ContentProvider,一是数据调用工具ContentResolver。对于系统已经提供的URI,如通讯录、多媒体、短信等,通常可以不需要再建立额外的数据库,再用ContentProvider进行组织,而是可以直接用ContentResolver调用这些URI,对系统数据库进行增删改查等操作,从而保证整个Android设备中数据的统一。

下面这个链接是本人前段时间为了参加MM论坛的一个小比赛所做的通讯录小demo的源码。因为最近工作和生活的一些原因,把比赛的截止日期给耽误了,所以到最后也没做美工。

http://download.csdn.net/detail/sadfishsc/4182452

对通讯录URI的分析主要参考的是雨松MOMO的博文:

http://blog.csdn.net/xys289187120/article/details/6730957

如下是对通讯录表进行添加和删除的处理类ContactHandler:

如下是一次性获取通讯录列表信息的类ContractGenerator:

对系统通讯录数据库进行操作,需要在AndroidManifest.xml文件中添加如下两个用户权限:


对于ContentResolver的使用,主要是如下几个步骤:

1.通过Context的getContentResolver()方法获取ContentResolver实例;

2.调用ContentResolver的insert、delete、update、query方法对数据表进行增删改查操作,对数据表的指定是通过系统URI来完成,这些URI会作为参数传入上述4个方法中。详情参见Android API文档。

另外,如下的博文分享了包括通讯录、多媒体、短信在内的系统URI:

http://blog.csdn.net/lyx2007825/article/details/7280043

就本文中的示例而言,Java源码文件如下图:

通过ContentResolver调用系统URI实现的通讯录示例

除了前述两个对ContentResolver的操作外,本通讯录的UI控件主要基于二级列表ExpandableListView,所以有继承自BaseExpandableListAdapter的二级列表数据处理适配器类ContactAdapter。另外,ContactItem是数据实体类。其余两个Activity类的界面类。

最后需要说明的是,对于系统已经提供了URI的数据资源,没有必要再用ContentProvider对其进行封装管理,因而本示例中并没有用到ContentProvider,只用到ContentResolver。

你可能感兴趣的:(content)