返回
1. 设置权限
Android
2023-10-28 18:04:29
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.StructuredPostal
和ContactsContract.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);