Android应用实战:内容提供者读取与显示联系人

4 下载量 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查看和读取联系人,对于开发者来说是一项实用的技能,它可以帮助你在构建需要与用户联系信息交互的应用时更加得心应手。通过这个实例,你可以了解到权限管理、数据访问和界面展示的各个环节,对你的项目开发大有裨益。