Android开发:一键获取通讯录完整信息工具类
32 浏览量
更新于2024-08-30
收藏 62KB PDF 举报
本文主要介绍如何在Android应用开发中获取手机联系人信息,提供了一个工具类,便于开发者方便地访问和处理联系人数据。
在Android系统中,获取联系人信息通常涉及使用`ContactsContract`内容提供者。内容提供者是一个接口,允许应用程序访问和操作系统数据,如联系人、日历等。`ContactsContract`类提供了访问联系人数据的各种常量和URI,包括联系人的姓名、电话号码、电子邮件地址等。
下面是一个简化的工具类示例,用于获取和分类联系人信息:
```java
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.provider.ContactsContract.CommonDataKinds.Im;
import android.provider.ContactsContract.CommonDataKinds.Nickname;
import android.provider.ContactsContract.CommonDataKinds.Note;
import android.provider.ContactsContract.CommonDataKinds.Organization;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
public class ContactInfoFetcher {
public static List<Contact> fetchAllContacts(Context context) {
List<Contact> contacts = new ArrayList<>();
Cursor cursor = context.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (cursor != null && cursor.moveToNext()) {
Contact contact = new Contact();
// 获取基本联系人信息
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
String displayName = cursor.getString(cursor.getColumnIndex(StructuredName.DISPLAY_NAME));
// 获取电话号码
String phoneNumber = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));
if (!phoneNumber.isEmpty()) {
contact.addPhoneNumber(phoneNumber);
}
// 其他数据,例如电子邮件、组织、昵称等
// 这里可以添加更多查询来获取其他字段
contacts.add(contact);
}
if (cursor != null) {
cursor.close();
}
return contacts;
}
}
class Contact {
private String id;
private String name;
private List<String> phoneNumbers;
// 其他属性,如email, organization等
// 构造函数、getter、setter方法
}
```
这个工具类首先通过`ContentResolver`发起查询,获取`CommonDataKinds.Phone.CONTENT_URI`上的所有联系人。然后遍历`Cursor`,获取每个联系人的ID(`_ID`)和显示名称(`DISPLAY_NAME`)。对于电话号码,使用`Phone.NUMBER`字段。此外,你可以根据需要扩展该类,查询更多字段,例如电子邮件(`Email`)、事件(`Event`)、即时消息(`Im`)、昵称(`Nickname`)、笔记(`Note`)、组织(`Organization`)和地址(`StructuredPostal`)等。
注意,为了保护用户隐私,从Android 6.0(API级别23)开始,你需要在运行时请求读取联系人的权限(`READ_CONTACTS`)。在获取联系人信息之前,确保已经获得了用户的许可。
这个工具类简化了获取和处理Android设备上联系人信息的过程。通过理解`ContactsContract`内容提供者的工作原理,开发者可以更加高效地与手机通讯录进行交互,实现各种功能,如同步、备份或展示联系人列表。
709 浏览量
845 浏览量
158 浏览量
202 浏览量
708 浏览量
2011-10-16 上传
2020-09-04 上传
144 浏览量
116 浏览量
weixin_38646645
- 粉丝: 4
- 资源: 1001
最新资源
- 关于java23种设计模式的有趣见解
- Multiple Emitter Location and Signal Parameter Estimation
- Oracle(2).pdf
- LAMP平台配置指导
- Jsp连接数据库大全
- 61单片机 毕业设计指导书
- JAVA性能优化.docJAVA性能优化.doc
- Linux 上的 CC++ 编译器和调试器.doc
- 计算机网络教程 谢希人编 课后答案
- 汤子瀛计算机操作系统(西电)习题答案与讲解
- MacOS英文用户手册
- MyEclipse 6 Java 开发中文教程
- 英语 金融英语WORD版
- 清华大学2006年软件工程期末试卷
- Cisco路由模拟器Dynamips使用指南
- 敏捷与架构敏捷与架构