Android 获取通讯录信息

启动通讯录页面获取用户点击的 item 的数据(姓名、手机号)

//启动通讯录页面startActivityForResult(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_UPI),0);@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(resultCode == RESULT_OK){            // ContentProvider展示数据类似一个单个数据库表            // ContentResolver实例带的方法可实现找到指定的ContentProvider并获取到ContentProvider的数据            ContentResolver reContentResolverol = getContentResolver();            // URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集            Uri contactData = data.getData();            Log.e("tag_uri= ", contactData);            // 查询就是输入URI等参数,其中URI是必须的,其他是可选的,如果系统能找到URI对应的ContentProvider将返回一个Cursor对象.            Cursor cursor = reContentResolverol.query(contactData, null, null, null, null);            cursor.moveToFirst();            // 条件为联系人ID            String contactId = cursor.getString(cursor                    .getColumnIndex(ContactsContract.Contacts._ID));            // 获得DATA表中的电话号码,条件为联系人ID,因为手机号码可能会有多个            Cursor phone = reContentResolverol.query(                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "                            + contactId, null, null);            while (phone.moveToNext()) {                String usernumber = phone                        .getString(phone                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                String name = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));                Log.e("tag_x",  "userName= " + usernumber + "\n name = " + name, getClass());            }        }    }

获取通讯录列表信息(姓名、手机号)

ContentResolver contentResolver = context.getContentResolver();        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");        String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER};        Cursor cursor = contentResolver.query(uri, projection, null, null, null);//        cursor.moveToFirst();        while (cursor.moveToNext()){            //拿到联系人id 跟name//            int id = cursor.getInt(cursor.getColumnIndex("_id"));            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));            String phone = cursor.getString(cursor.getColumnIndex("data1"));            LogUtil.e("name = " + name, context.getClass());            LogUtil.e("phone = " + phone, context.getClass());            String[] columnNames = cursor.getColumnNames();            for (String cName:                 columnNames) {                LogUtil.e("cName= " + cName, context.getClass());            }        }

所需权限

    "android.permission.READ_CONTACTS" />

获取联系人其他信息

参考链接

http://www.cnblogs.com/zhujiabin/p/6645551.html

参考代码
public void testGetAllContact() throws Throwable    {        //获取联系人信息的Uri        Uri uri = ContactsContract.Contacts.CONTENT_URI;        //获取ContentResolver        ContentResolver contentResolver = ContactListActivity.this.getContentResolver();        //查询数据,返回Cursor        Cursor cursor = contentResolver.query(uri, null, null, null, null);        List> list = new ArrayList>();        while(cursor.moveToNext())        {            Map map = new HashMap();            StringBuilder sb = new StringBuilder();            //获取联系人的ID            String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));            //获取联系人的姓名            String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));            //构造联系人信息            sb.append("contactId=").append(contactId).append(",Name=").append(name);            map.put("name", name);            String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));//联系人ID             //查询电话类型的数据操作            Cursor phones = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                    null,                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,                    null, null);            while(phones.moveToNext())            {                String phoneNumber = phones.getString(phones.getColumnIndex(                        ContactsContract.CommonDataKinds.Phone.NUMBER));                //添加Phone的信息                sb.append(",Phone=").append(phoneNumber);                map.put("mobile", phoneNumber);            }            phones.close();            //查询Email类型的数据操作            Cursor emails = contentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,                    null,                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,                    null, null);            while (emails.moveToNext())            {                String emailAddress = emails.getString(emails.getColumnIndex(                        ContactsContract.CommonDataKinds.Email.DATA));                //添加Email的信息                sb.append(",Email=").append(emailAddress);                Log.e("emailAddress", emailAddress);                map.put("email", emailAddress);            }            emails.close();            //Log.i("=========ddddddddddd=====", sb.toString());            //查询==地址==类型的数据操作.StructuredPostal.TYPE_WORK            Cursor address = contentResolver.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,                    null,                    ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = " + contactId,                    null, null);            while (address.moveToNext())            {                String workAddress = address.getString(address.getColumnIndex(                        ContactsContract.CommonDataKinds.StructuredPostal.DATA));                //添加Email的信息                sb.append(",address").append(workAddress);                map.put("address", workAddress);            }            address.close();            //Log.i("=========ddddddddddd=====", sb.toString());            //查询==公司名字==类型的数据操作.Organization.COMPANY  ContactsContract.Data.CONTENT_URI            String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";             String[] orgWhereParams = new String[]{id,                     ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};             Cursor orgCur = contentResolver.query(ContactsContract.Data.CONTENT_URI,                     null, orgWhere, orgWhereParams, null);             if (orgCur.moveToFirst()) {                 //组织名 (公司名字)                String company = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));                 //职位                 String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));                 sb.append(",company").append(company);                sb.append(",title").append(title);                map.put("company", company);                map.put("title", title);            }             orgCur.close();             list.add(map);            Log.i("=========orgName=====", sb.toString());//查看所有的数据            Log.e("=========map=====", map.toString());//有很多数据的时候,只会添加一条  例如邮箱,        }        Log.i("=========list=====", list.toString());//        cursor.close();        }

更多相关文章

  1. Android获取apk的版本及包名等信息
  2. Android(安卓)Bundle类
  3. Android获取本机Mac地址及IP地址方法
  4. FregServer进程,获取ServiceManager代理对象
  5. Android通过http协议POST传输方式
  6. Qt for Android获取手机序列号
  7. 【Android】Android中的数据传递(2)
  8. Android常用功能代码总结一
  9. Mac下获取android studio keystore的SHA1和MD5

随机推荐

  1. 前端作业-CSS1
  2. 表单以及选择器
  3. 注册表单、基本选择器及上下文选择器
  4. PHP快递查询接口api和快递单号智能判断PH
  5. 图标使用、盒模型、box-sizing、百分比布
  6. Visual Studio Code如何切换为简体中文
  7. html5表格实战(课程表)
  8. 表单案例和css模块化与选择器
  9. html字体图标及盒模型练习
  10. php学习第四天