前段时间项目中用到了导入到通讯录这个功能,今天总结一下贴出来,供需要的小伙伴使用,代码直接贴
1、权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
2、代码:permission()
private void permission() {
if (ContextCompat.checkSelfPermission((Activity) context, Manifest.permission.WRITE_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.WRITE_CONTACTS}, 0);
} else {
addContacts("张三石","15836033333");//导入到通讯录
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 0: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {// 权限请求成功的操作
addContacts("张三石","15836033333");//导入到通讯录
} else {// 权限请求失败的操作
Toast.makeText(context, "您拒绝了写入通讯录的权限,需要时您可以在设置中自行开启", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
/**
* 导入到通讯录
*/
public void addContacts(String name , String tel){
name = name+"@客户管理";
//插入raw_contacts表,并获取_id属性
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContentResolver();
ContentValues values = new ContentValues();
long contact_id = ContentUris.parseId(resolver.insert(uri, values));
//插入data表
uri = Uri.parse("content://com.android.contacts/data");
//add Name
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE,"vnd.android.cursor.item/name");
values.put("data2", name);
values.put("data1", name);
resolver.insert(uri, values);
values.clear();
//add Phone
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE,"vnd.android.cursor.item/phone_v2");
values.put("data2", "2"); //手机
values.put("data1", tel);
resolver.insert(uri, values);
values.clear();
/*//add email
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE,"vnd.android.cursor.item/email_v2");
values.put("data2", "2"); //单位
values.put("data1", "xzdong@xzdong.com");
resolver.insert(uri, values);*/
}
有什么疑问欢迎小伙伴们来提问,有什么不足欢迎大佬评论,转载请标明出处!