Android应用实战:内容提供者读取与显示联系人
63 浏览量
更新于2024-08-28
1
收藏 125KB PDF 举报
在Android开发中,了解如何查看和读取手机联系人是十分重要的,因为许多应用程序可能需要访问用户的联系人数据。本篇文章将详细介绍两种方法来实现这一功能:一是通过系统内置的Contacts应用,二是直接通过ContentProvider访问联系人数据库。
首先,确保在`AndroidManifest.xml`文件中添加必要的权限,因为读取联系人涉及到隐私数据,所以必须请求用户的许可。具体来说,你需要在`<manifest>`标签内加入以下两行:
```xml
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
```
这些权限分别允许应用读取(READ_CONTACTS)和写入(WRITE_CONTACTS)联系人数据。
接下来,我们看两种不同的实现方式:
1. 系统自带的联系人界面:
这种方法通常用于简单地展示联系人列表,而不是修改它们。可以通过以下步骤实现:
- 创建一个`Activity`,并重写相应的方法,如`onCreate()`,在这个方法中启动系统联系人选择器。
- 使用`Intent`打开`ACTION_PICK`动作,指定`ContactsContract.CommonDataKinds.Phone.CONTENT_URI`,这是联系人电话号码的数据URI:
```java
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, REQUEST_CODE_PICK_CONTACT);
```
- 当用户选择联系人后,处理`onActivityResult()`回调,解析返回的数据。
2. 直接通过ContentProvider读取并显示:
这个方法更深入地利用了ContentProvider,可以直接操作联系人数据库。首先,创建一个`BaseAdapter`来显示联系人数据:
```java
private class ContactAdapter extends BaseAdapter {
// ... 实现构造函数、获取联系人数据、getView()方法等
}
```
- 在`getView()`方法中,使用`Cursor`遍历联系人数据,展示联系人的姓名、电话号码等信息。
- 如果需要,还可以提供筛选或搜索功能,使用`Uri`构建查询条件。
为了在主页面上显示这些联系人,可以使用一个`ListView`,并将`ContactAdapter`设置为它的适配器。当用户点击列表项时,可以弹出对话框显示联系人详情或者执行其他操作。
最后,别忘了处理`PhoneStateListener`和`TelephonyManager`,以确保在应用有权限的情况下访问联系人数据。这通常是当应用需要获取设备状态或者用户授权时进行的。
了解并掌握如何在Android应用中使用ContentProvider查看和读取联系人,对于开发者来说是一项实用的技能,它可以帮助你在构建需要与用户联系信息交互的应用时更加得心应手。通过这个实例,你可以了解到权限管理、数据访问和界面展示的各个环节,对你的项目开发大有裨益。
2015-04-11 上传
2021-01-03 上传
2020-08-31 上传
2021-01-20 上传
2011-12-01 上传
2016-07-18 上传
2015-02-03 上传
2015-08-19 上传
weixin_38691970
- 粉丝: 6
- 资源: 959
最新资源
- Haskell编写的C-Minus编译器针对TM架构实现
- 水电模拟工具HydroElectric开发使用Matlab
- Vue与antd结合的后台管理系统分模块打包技术解析
- 微信小游戏开发新框架:SFramework_LayaAir
- AFO算法与GA/PSO在多式联运路径优化中的应用研究
- MapleLeaflet:Ruby中构建Leaflet.js地图的简易工具
- FontForge安装包下载指南
- 个人博客系统开发:设计、安全与管理功能解析
- SmartWiki-AmazeUI风格:自定义Markdown Wiki系统
- USB虚拟串口驱动助力刻字机高效运行
- 加拿大早期种子投资通用条款清单详解
- SSM与Layui结合的汽车租赁系统
- 探索混沌与精英引导结合的鲸鱼优化算法
- Scala教程详解:代码实例与实践操作指南
- Rails 4.0+ 资产管道集成 Handlebars.js 实例解析
- Python实现Spark计算矩阵向量的余弦相似度