"这篇教程详细介绍了如何在Android应用中利用ContentResolver访问者来获取手机的联系人信息。主要内容包括两种不同的实现方式,一种是直接获取所有联系人并显示在ListView中,另一种是通过按钮引导用户选择单个联系人再进行显示。教程中还提到了在AndroidManifest.xml中添加必要的权限声明,并给出了相关的布局文件示例。" 在Android开发中,ContentResolver是用于与内容提供者交互的重要组件,它可以让我们读取或修改系统数据,如联系人、日历等。要获取手机联系人信息,我们首先需要在`AndroidManifest.xml`文件中添加`READ_CONTACTS`权限,这是对读取联系人数据的权限请求: ```xml <uses-permission android:name="android.permission.READ_CONTACTS" /> ``` 接下来,我们需要创建一个ListView来显示联系人列表。在`activity_main.xml`布局文件中,定义了一个ListView用于显示所有联系人: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.android_25.MainActivity"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/lv_lxr" /> </ListView> ``` 为了获取联系人信息,我们使用ContentResolver查询`ContactsContract`中的数据。以下是一个简单的示例,展示了如何获取所有联系人: ```java ContentResolver resolver = getContentResolver(); Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 将name和number添加到ListView的数据源,如ArrayList,然后通知Adapter更新数据 } cursor.close(); } ``` 第二种方式是通过按钮点击事件打开系统的联系人选择器,让用户选择一个联系人后再显示。这通常涉及到Intent的使用,启动一个选择联系人的Activity,获取返回的结果后在ListView中显示: ```java Button selectContactBtn = findViewById(R.id.select_contact_btn); selectContactBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, REQUEST_CODE_SELECT_CONTACT); } }); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_SELECT_CONTACT && resultCode == RESULT_OK) { Uri contactUri = data.getData(); Cursor cursor = resolver.query(contactUri, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 显示所选联系人的name和number cursor.close(); } } } ``` 在这个过程中,`onActivityResult()`方法用于处理选择联系人后的回调,通过返回的Intent数据解析出选中的联系人信息。 这两种方法都可以帮助开发者实现获取和显示Android手机联系人信息的功能。第一种适用于需要一次性展示所有联系人的情况,而第二种则更适合用户按需选择单个联系人的情况。在实际开发中,可以根据具体需求选择合适的方法。
- 粉丝: 3
- 资源: 938
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- OptiX传输试题与SDH基础知识
- C++Builder函数详解与应用
- Linux shell (bash) 文件与字符串比较运算符详解
- Adam Gawne-Cain解读英文版WKT格式与常见投影标准
- dos命令详解:基础操作与网络测试必备
- Windows 蓝屏代码解析与处理指南
- PSoC CY8C24533在电动自行车控制器设计中的应用
- PHP整合FCKeditor网页编辑器教程
- Java Swing计算器源码示例:初学者入门教程
- Eclipse平台上的可视化开发:使用VEP与SWT
- 软件工程CASE工具实践指南
- AIX LVM详解:网络存储架构与管理
- 递归算法解析:文件系统、XML与树图
- 使用Struts2与MySQL构建Web登录验证教程
- PHP5 CLI模式:用PHP编写Shell脚本教程
- MyBatis与Spring完美整合:1.0.0-RC3详解