首先需要获取读写权限
先判断手机号是否存在通讯录里面,不存在开始保存。
/**
* Created by jie wang on 2019/12/31.
* 录入联系人到通讯录
*/
public class AddressBookUtils {
private static String TAG = "AddressBook";
private static AddressBookUtils instance;
public static AddressBookUtils getInstance() {
if (null == instance) {
instance = new AddressBookUtils();
}
return instance;
}
/**
* 添加联系人信息
*/
public void AddressBook(Context context, String name, String phoneNum) {
try {
Log.e(TAG, "---接收到--- 姓名=" + name + " 手机号=" + phoneNum);
if (isPhoneExist(context, phoneNum)) {
Log.e(TAG, "手机号已存在");
return;
}
long rawContactId = 0;
ContentValues values = new ContentValues();
if (rawContactId == 0) {
//插入raw_contacts表,并获取_id属性
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = context.getContentResolver();
rawContactId = ContentUris.parseId(resolver.insert(uri, values));
//插入data表
uri = Uri.parse("content://com.android.contacts/data");
//add Name
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/name");
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);
resolver.insert(uri, values);
values.clear();
Log.e(TAG, "保存姓名成功");
//写入手机号码
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNum);
values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
context.getContentResolver().insert(uri, values);
Log.e(TAG, "保存手机号成功");
}
} catch (Exception e) {
Log.i(TAG, "保存到通讯报错: e = " + e.getMessage());
e.printStackTrace();
}
}
/**
* 判断某个手机号是否存在
*/
private boolean isPhoneExist(Context context, String phoneNum) {
Cursor cursor = null;
try {
Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + phoneNum);
ContentResolver resolver = context.getContentResolver();
cursor = resolver.query(uri, new String[]{ContactsContract.Data.DISPLAY_NAME},
null, null, null);
if (cursor.moveToFirst()) {
cursor.close();
return true;
}
} catch (Exception e) {
Log.e(TAG,"权限未申请");
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}
}
return false;
}
}