一,清单文件,添加权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- 获取用户联系人数据 -->
二,动态申请权限

三,跳转系统联系人界面
//权限申请成功后,打开通讯录
public void openPhoneBook() {
Intent intent =new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, Constant.REQUEST_CODE_PHONE);
}
四,回调数据

//获取到电话
private void getPhoneBookName(Intent data) {
if (data !=null) {
Uri uri = data.getData();
String[] contact =new String[2];
//得到ContentResolver对象**
ContentResolver cr = getContentResolver();
//取得电话本中开始一项的光标**
Cursor cursor=cr.query(uri,null,null,null,null);
if(cursor!=null)
{
cursor.moveToFirst();
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"=" + ContactId, null, null);
if(phone !=null){
phone.moveToFirst();
contact[0] = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNum = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// 把电话号码中的 - 符号 替换成空格
phoneNum = phoneNum.replaceAll("-", " ");
// 空格去掉 为什么不直接-替换成"" 因为测试的时候发现还是会有空格 只能这么处理
phoneNum = phoneNum.replaceAll(" ", "");
contact[1] = phoneNum;
}
phone.close();
cursor.close();
}
String contactName = contact[0]; //姓名
String phoneNum = contact[1];//电话
}
}
网友评论