现在的位置: 首页 > 综合 > 正文

Android应用开发笔记(2):读取手机中的联系人信息(android.provider.ContactsContract)

2013年04月19日 ⁄ 综合 ⁄ 共 6310字 ⁄ 字号 评论关闭

本文来自http://blog.csdn.net/xjanker2 ,引用转载必须注明出处!

上一篇中使用了打电话发短信的功能,但号码联系人信息我们还不知道。本篇开始讲如何从Android中得到本机联系人的信息。

由于Android较快的版本升级,部分API已经发生了变化。本篇探究的通过ContentProvider机制获取联系人的API从Android2.0开始做了很大调整,原来的android.provider.Contacts类及其下相关类由android.provider.ContactsContract代替。原类体系标记为Deprecated(废弃),因为兼容的原因目前还存在,但不保证以后的更新版本中完全丢弃。

 

所以本文先从Android2.1以上平台的联系人读取开始说起,下面给出代码在Android2.1/2.2中运行的效果图,

 

 

首先,创建类ViewContacts继承ListActivity,并设为为应用的开始Activity。

ViewContacts.java 代码:

 

 

 main.xml 代码:

list_item.xml 代码:

 

AndroidManifest.xml 增加uses权限READ_CONTACTS 代码:

 

以上文件编写好后,应用就能够在Android2.1模拟器上正确运行了。

 

那么该app如果在android1.6上运行,会怎么样呢?1.6上并没有ContactsContract类体系,所以就会报错了。需要注意,ContactContract类是在API Level 5增加的,之前的Android版本并不支持。

在Android 1.6 (API Level 4)上,获取联系人的方法将fillMaps()实现为如下:

 

 

 那么就能在1.6上运行了,效果截图如下:

联系人API,在Android2.0后产生变化,如果使用如上1.6版本的调用,你会发现在2.1下姓名有了,但电话号码不显示了。仔细观察可以发现,People.CONTENT_URI等调用在2.0以上的sdk中都标记了Deprecated。这一点,对于编写希望能够同时兼容1.6与2.x版本的应用造成了困难。那么,如果应用涉及到联系人的读取,非得要编写多个版本的apk了吗? 其实,我们可以使用判断当前系统API Level的方法编写两套代码备用,这个就留给大家去实践了。

 

获得系统API level方法:

抱歉!评论已关闭.