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 Studio查看错误信息
  2. 【Android】Android中的数据传递(2)
  3. Android 获取设备各种信息以及其它
  4. Android获取apk的版本及包名等信息
  5. Android 获取手机信息
  6. Android之获取手机信息
  7. Android 学习笔记 Contacts (三)Contacts 查找,增加,更新,删除联系人
  8. android解析xml文件 Android DOM解析XML之全球实时地震信息列表
  9. 在android里保存数据的三种形式(Saving Data)

随机推荐

  1. sqlserver数据库移动数据库路径的脚本示
  2. t-sql清空表数据的两种方式示例(truncate
  3. MSSQLSERVER跨服务器连接(远程登录)的示
  4. t-sql/mssql用命令行导入数据脚本的SQL语
  5. mssql函数DATENAME使用示例讲解(取得当前
  6. SQLSERVER加密解密函数(非对称密钥 证书
  7. SQLSERVER全文目录全文索引的使用方法和
  8. sql实现split函数的脚本
  9. SQLSERVER启动不起来(错误9003)的解决方
  10. 2分法分页存储过程脚本实例