Content Prodvider 类----实例:获取通讯录信息

作者:王娇

   

     Content Prodvider 类实现了一组标准的方法,能够让其他的应用保存或读取此内容提供处理的各种数据类型。在Android中,Content Provider 是一个特殊的存储数据的类型,它提供了一套标准的接口用来获取和操作数据。并且,Android自身也提供了现成的Content Provider: Contacts、Browser、CallLog、Settings、MediaStore。应用可以通过唯一的ContentProvider,然后就可以用ContentResolver界面来使用具体的某个Content Provider,然后就可以用ContentResolver提供的方法来使用你需要的Content Provider了。其中,ContentResolver提供的方法包括query()、insert()、update()等。要通过用这些方法,还会涉及URI。你可以将它理解成string形式的Content Provider的完全路径。


下面我们通过ContentProvider获得电话本中的数据,然后显示到一个TextView中,在运行程序之前我们先看看电话本中存储的电话号码,如图1。



图1 通讯录数据

首先我们要通过getContentProvider方法来获取一个ContentResolver对象,然后通过其query方法查询出符合标准的电话记录,最后将这些数据都显示在一个TextView中即可。具体代码如下:






这些模块,需要在AndroidManifest.xml声明,本例子中我们使用了读取联系人的API,因此,声明方式如下:




最后在TextView显示我们在通讯录上读到的数据。如图2所示:




注意:

1、  读取通讯录的电话号码


在本例子的代码的红色框里面的代码 {  intnumberFieldColumnIndex =cursor.getColumnIndex(PhoneLookup.NUMBER);    
            Stringnumber = cursor.getString(numberFieldColumnIndex);  } 会发生错误,读不到通讯录里面的电话号码,调试的过程中发现numberFieldColumnIndex获得值“-1”。因为2.0后,读取电话号码的API发生了改变的,所以读取手机代码因为





2、  Uses-permission的位置

应该放在<manifest>标签的下一级,而不是在<application>标签的下一级。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值