android技术博客诗友会随笔诗

教你如何调取android通讯录(电话簿)中的信息

2017-11-28  本文已影响55人  五万年前走丢了

废话不多少直接开整。
效果图镇楼


这里写图片描述

1.首先要获取权限偶。

<!-- 加入读写联系人信息的权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>

页面做好后我们分别给三个选择按钮添加监听,并在监听中添加打开通讯录的方法并传入区别三个信息内容的code码。

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.contacts_family_bt:
                OpenPhoneBook(0);
                break;
            case R.id.contacts_friend_bt:
                OpenPhoneBook(1);
                break;
            case R.id.contacts_colleague_bt:
                OpenPhoneBook(2);
                break;
            default:
                break;
        }
    }

在方法区粘入上面代码中所用到的OpenPhoneBook();方法。

 private void OpenPhoneBook(int requestCode) {
        startActivityForResult(new Intent(
                Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), requestCode);
    }

你点击上述按钮后会跳入通讯录界面,选择联系人后会返回当前界面并调用下面方法。我会在代码中以注释的方式说明其相关用途。(将下面方法粘入方法区即可)

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //声明两个承载调回信息的字符串(用户名和电话号码)
         String username;
         String usernumber;
        if (resultCode == Activity.RESULT_OK) {
            ContentResolver reContentResolverol = getContentResolver();
            Uri contactData = data.getData();
            Cursor cursor = reContentResolverol.query(contactData, null, null, null, null);
            cursor.moveToFirst();
            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor phone = reContentResolverol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
                    null,
                    null);
   //以上代码是为从通信录中调出信息做准备工作,我怕我讲完你们脑袋都大了,这里就不深究了,粘上就好。
            while (phone.moveToNext()) {
        //从通讯录中获取姓名和电话号赋给变量
                username = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                usernumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
               // 根据我们之前传入的code码来区分回调的信息是点击哪个按钮的时候回传的,并赋给相对应的属性。
                switch (requestCode){
                    case 0://等于“0”时代表回传信息是点击家人后回传的,将值设置给家人
                        family = username+usernumber;
                        family_et.setText(family);
                        break;
                    case 1://“1”代表朋友
                        friend = username+usernumber;
                        friend_et.setText(friend);
                        break;
                    case 2://“2”代表另一个朋友
                        colleague = username+usernumber;
                        colleague_et.setText(colleague);
                        break;
                    default:
                        break;
                }

            }

        }
    }

还有什么不明白的地方可以在博客下留言,喜欢记得点赞偶。

上一篇 下一篇

猜你喜欢

热点阅读