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

本文介绍了如何在Android 2.1及以上版本中使用ContentProvider机制,通过ContactsContract类获取手机联系人信息。代码示例展示了如何读取联系人姓名和电话号码,并对比了Android 1.6的获取方式。注意,ContactsContract在API Level 5引入,对于更早版本需要使用不同的方法。
摘要由CSDN通过智能技术生成

本文来自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方法:

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值