Android获取手机联系人的姓名和电话

Android获取手机联系人的姓名和电话


主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码

注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上:http://www.educity.cn/wenda/178475.html

/ 首先 我们需要跳入手机通讯录
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
 startActivityForResult(intent, 0);

// 之后,我们需要重写onActivityResult来解析从联系人返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case 0: {

            if (resultCode == Activity.RESULT_OK) {

                Uri contactData = data.getData();
                // 这样就得到了一个装有联系人数据的游标
                Cursor c = managedQuery(contactData, null, null, null, null);
                // 将游标移动到第一个位置,然后我们开始解析游标中的数据,这里我们抽取了一个方法;
                c.moveToFirst();
                // getContactPhone(CUrsor cursor)
                String phoneNum[] = this.getContactPhone(c);
                // 最终 就得到了你想得到的东西,装在了phoneNum[] 中,想做什么操作就做什么操作就行了;
            }

            break;
        }
    }
}
/**
 * 参数: Cursor cursor; 指定游标
 * 功能: 从指定游标中取出联系人姓名和电话,并且返回
 * 返回值: String[] 0位置是联系人姓名 1位置是联系人电话
 */
private String[] getContactPhone(Cursor cursor) {

    int phoneColumn = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
    int phoneNum = cursor.getInt(phoneColumn);
    // 最终要返回的String数组
    String phoneResult[] = new String[2];
    if (phoneNum > 0) {
        // 获得联系人的ID号
        int idColumn = curso0r.getColumnIndex(ContactsContract.Contacts._ID);
        String contactId = cursor.getString(idColumn);
        // 获得联系人的电话号码的cursor;
        Cursor phones = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                null,
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
                null, null);
        if (phones.moveToFirst()) {
            // 遍历所有的电话号码
            for (; !phones.isAfterLast(); phones.moveToNext()) {// 得到选定联系人的号码
                String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                // 得到选定联系人的名字
                String phoneName = phones.getString(phones.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
                phoneResult[1] = phoneNumber;
                phoneResult[0] = phoneName;
            }
            // 最后 要关闭Cursor
            if (!phones.isClosed()) {
                phones.close();
            }
        }
    }
    return phoneResult;
}

复制以上代码,就可以做到了..

posted @ 2016-06-07 22:25  RedWolfChao  阅读(1730)  评论(0编辑  收藏  举报