首先使用下面代码启动系统通讯录
// 按钮的点击事件: 打开系统联系人。
public void btn_contacts() {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("vnd.android.cursor.dir/phone_v2");
startActivityForResult(intent, 1);
}
接下来继续看代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
Uri uri=data.getData();
String[] contact=getPhoneContacts(uri);
if (contact!=null){
String name=contact[0];//姓名
String number=contact[1];//手机号
number = formatPhoneNum(number);
listItems.add(new ContactBean(name,number));
mAdapter.update(listItems);
}
}
}
/**
* 读取联系人信息
* @param uri
*/
private String[] getPhoneContacts(Uri uri){
String[] contact = new String[2];
//得到ContentResolver对象
ContentResolver cr = this.getActivity().getContentResolver();
Cursor cursor = cr.query(uri, null, null, null, null);
if (cursor != null&&cursor.moveToFirst()) {
//取得联系人姓名
int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
contact[0] = cursor.getString(nameFieldColumnIndex);
contact[1]=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i("contacts",contact[0]);
Log.i("contactsUsername",contact[1]);
cursor.close();
} else {
return null;
}
return contact;
}
/**
* 去掉手机号内除数字外的所有字符
*
* @param phoneNum 手机号
* @return
*/
private String formatPhoneNum(String phoneNum) {
String regex = "(\\+86)|[^0-9]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(phoneNum);
return matcher.replaceAll("");
}