Android 联系人 API 入门指南
在 Android 开发中,我们经常需要访问用户的联系人信息。幸运的是,Android 提供了一个强大的联系人 API,允许我们以编程方式访问和管理联系人数据。本文将介绍如何使用 Android 联系人 API,并提供一些代码示例。
准备工作
在开始之前,请确保你的 Android 项目已经添加了必要的权限。你需要在 AndroidManifest.xml
文件中添加以下权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
访问联系人
要访问联系人,我们首先需要获取 ContentResolver
对象,然后使用它来查询联系人数据。以下是一个简单的示例,展示如何获取所有联系人的姓名和电话号码:
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String phoneNumber = null;
// 获取联系人的电话号码
if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor phoneCursor = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[]{cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID))},
null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phoneCursor.close();
}
}
Log.d("Contacts", "Name: " + name + ", Phone: " + phoneNumber);
}
cursor.close();
}
添加联系人
除了访问联系人,我们还可以使用联系人 API 添加新的联系人。以下是一个示例,展示如何添加一个新联系人:
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.DISPLAY_NAME, "John Doe");
values.put(ContactsContract.Contacts.HAS_PHONE_NUMBER, 1);
Uri contactUri = contentResolver.insert(ContactsContract.Contacts.CONTENT_URI, values);
if (contactUri != null) {
long contactId = Long.parseLong(contactUri.getLastPathSegment());
values.clear();
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "1234567890");
values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
values.put(ContactsContract.CommonDataKinds.Phone.CONTACT_ID, contactId);
contentResolver.insert(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, values);
}
甘特图
以下是使用 Mermaid 语法创建的甘特图,展示联系人 API 的主要步骤:
gantt
title 联系人 API 步骤
dateFormat YYYY-MM-DD
section 访问联系人
查询联系人数据 :done, des1, 2023-01-01, 3d
获取联系人姓名和电话号码 :active, des2, after des1, 2d
section 添加联系人
创建新联系人 : des3, after des2, 1d
添加电话号码 : des4, after des3, 1d
类图
以下是使用 Mermaid 语法创建的类图,展示联系人 API 中的主要类和它们之间的关系:
classDiagram
class ContentResolver {
+query(uri, projection, selection, selectionArgs, sortOrder)
+insert(uri, values)
}
class ContactsContract {
+Contacts
+CommonDataKinds
}
class Contacts {
+CONTENT_URI
+DISPLAY_NAME
+HAS_PHONE_NUMBER
}
class CommonDataKinds {
+Phone
+NUMBER
+TYPE
+TYPE_MOBILE
}
ContentResolver -- ContactsContract
ContactsContract : contains Contacts
ContactsContract : contains CommonDataKinds
结语
通过本文,我们了解了如何使用 Android 联系人 API 访问和添加联系人。这只是一个简单的入门指南,Android 联系人 API 还有很多高级功能等待我们去探索。希望本文能帮助你快速上手 Android 联系人 API 开发。