Android调用系统通讯录获取联系人姓名和号码

Android调用系统通讯录获取联系人姓名和号码

首先使用下面代码启动系统通讯录

//  按钮的点击事件: 打开系统联系人。
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("");
}

你可能感兴趣的:(android)