返回

1. 设置权限

Android

Android通讯录信息写入:全面指南

前言

智能手机已成为我们日常生活不可或缺的一部分,它承载着大量的个人信息,其中最重要的信息之一便是通讯录。Android作为全球领先的移动操作系统,提供了强大且灵活的API,使开发者能够轻松地存取和管理通讯录信息。本指南将深入探讨如何在Android应用程序中写入手机、电话、邮箱、地址等信息。

在访问Android通讯录之前,我们需要获得相应的权限。在清单文件中添加以下权限声明:

<uses-permission android:name="android.permission.WRITE_CONTACTS" />

为了向通讯录写入信息,我们需要创建一个新的Contact对象。我们可以使用ContactsContract.RawContacts类的newRawContact方法创建联系人对象。

ContentValues values = new ContentValues();
values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType);
values.put(ContactsContract.RawContacts.ACCOUNT_NAME, accountName);
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);

有了联系人对象,我们就可以设置其信息了。使用ContactsContract.Data类中的insert方法,我们可以向通讯录中插入数据。以下是设置姓名、电话和电子邮件的方法示例:

// 设置姓名
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contactName);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

// 设置电话
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

// 设置电子邮件
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Email.ADDRESS, emailAddress);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

同样地,我们可以使用ContactsContract.CommonDataKinds.StructuredPostalContactsContract.CommonDataKinds.Organization类来设置地址和公司信息:

// 设置地址
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, address);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

// 设置公司
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Organization.COMPANY, companyName);
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

最后,我们需要提交对通讯录所做的更改。为此,我们需要调用ContactsContract.RawContacts类的update方法。

getContentResolver().update(rawContactUri, values, null, null);