ContactsContract 类是存储联系人相关信息的数据库。
获取联系人信息的URL:ContactsContract.Contacts.CONTENT_URI
几个需要用到的字段:

ContactsContract.Contacts.DISPLAY_NAME 获取联系人名字

ContactsContract.Contacts.HAS_PHONE_NUMBER 是否有号码

ContactsContract.Contacts._ID 获取联系人ID(每个联系人名字会有一个唯一对应的ID)

要获取联系人的某些信息,就可以用CommonDataKinds这个类,例如查找联系人的电话号码相关信息(ContactsContract.CommonDataKinds.Phone), ContactsContract.CommonDataKinds.Phone.CONTENT_URI这个URL可以查找所有联系人电话号码的数据。

首先,获取联系人信息表:

 /*ContentResolver ----> This class provides applications access to the content model.*/ContentResolver resolver = this.getContentResolver();//获取ContentResolver实例//标志你想获取联系人信息的列(这里是,联系人姓名、是否有号码、联系人ID)String[] PROJECTION={ ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};/*需要添加权限--- <uses-permission android:name="android.permission.READ_CONTACTS" /> ---*///获取到整份联系人的表,这份表有以上三列的信息Cursor phoneCursor=resolver.query(ContactsContract.Contacts.CONTENT_URI,PROJECTION,null,null,null);

然后,根据唯一的联系人ID,查找对应的电话号码

               //联系人姓名String telDisplayName=phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));//是否有电话号码:0代表没有,1代表有int hasTelNumber=phoneCursor.getInt(phoneCursor.getColumnIndex( ContactsContract.Contacts.HAS_PHONE_NUMBER));//联系人IDString contactId=phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts._ID));if (!TextUtils.isEmpty(telDisplayName)&&hasTelNumber==1){//查询该联系人的所有电话号码Cursor phoneNumberCursor=resolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId ,null,null);if (phoneNumberCursor!=null){while (phoneNumberCursor.moveToNext()){//获取联系人电话号码,一个联系人可能有多个电话号码String telNumber=phoneNumberCursor.getString(phoneNumberCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));Log.d(TAG, "获取联系人---- Name== "+telDisplayName+"----Number== "+telNumber);}}}}

以下是完整的代码

 /*** 获取联系人姓名和电话号码*/private void getContactInfo(){List<TelBean> telBeanList=new ArrayList<>();/*ContentResolver ----> This class provides applications access to the content model.*/ContentResolver resolver = this.getContentResolver();//获取ContentResolver实例String[] PROJECTION={ ContactsContract.Contacts.DISPLAY_NAME,ContactsContract.Contacts.HAS_PHONE_NUMBER,ContactsContract.Contacts._ID};/*需要添加权限--- <uses-permission android:name="android.permission.READ_CONTACTS" /> ---*/Cursor phoneCursor=resolver.query(ContactsContract.Contacts.CONTENT_URI,PROJECTION,null,null,null);if (phoneCursor!=null){while (phoneCursor.moveToNext()){TelBean telBean=new TelBean();//联系人姓名String telDisplayName=phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));telBean.setName(telDisplayName);//是否有电话号码int hasTelNumber=phoneCursor.getInt(phoneCursor.getColumnIndex( ContactsContract.Contacts.HAS_PHONE_NUMBER));//联系人IDString contactId=phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.Contacts._ID));Log.d(TAG, "ContactsContract.Contacts._ID: ----"+contactId);if (!TextUtils.isEmpty(telDisplayName)&&hasTelNumber==1){//查询该联系人的所有电话号码Cursor phoneNumberCursor=resolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId ,null,null);if (phoneNumberCursor!=null){while (phoneNumberCursor.moveToNext()){//获取联系人电话号码String telNumber=phoneNumberCursor.getString(phoneNumberCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));telBean.setNumber(telNumber);telBeanList.add(telBean);Log.d(TAG, "获取联系人---- Name== "+telDisplayName+"----Number== "+telNumber);}}}}Log.d(TAG, "Contact Count==: "+telBeanList.size());}}private class TelBean {private String Name;private String Number;public void setName(String name) {Name = name;}public void setNumber(String number) {Number = number;}public String getName() {return Name;}public String getNumber() {return Number;}}

以上。

Android 获取联系人姓名和电话号码信息相关推荐

  1. Android 获取联系人姓名与电话号码

    权限 <uses-permission android:name="android.permission.READ_CONTACTS" /> 跳转通讯录界面 findV ...

  2. android请输入姓名代码,Android获取联系人姓名和电话代码

    在开发中往往有要获取联系人列表的功能,但是这次却不是获取联系人列表,而是在联系人列表点击单个联系人,获取单个联系人的姓名和电话,并设置在指定的输入框内,方便用户的使用:以下是实现的代码: androi ...

  3. android 通过电话号码来获取联系人姓名

    通过电话号码来获取联系人姓名的程序如下,通过ContactsContract.PhoneLookup.CONTENT_FILTER_URI来获取对应adress(电话号码)的信息. private S ...

  4. [置顶] Android代码----android获取3G或wifi流量信息

    android获取3G或wifi流量信息: IBatteryStats battryStats = IBatteryStats.Stub.asInterface(ServiceManager.getS ...

  5. android+头像+程序,Android获取联系人头像的方法

    本文实例讲述了Android获取联系人头像的方法.分享给大家供大家参考,具体如下: public byte[] getPhoto(String people_id) { String photo_id ...

  6. android dhcp 服务器,android 获取当前手机的 DHCP 信息ip,server 等操作实例教程

    android 获取当前手机的 DHCP 信息ip,server 等操作实例教程WifiManager wifiManager = (WifiManager) getSystemService(Con ...

  7. android获取手机和系统版本等信息的代码,Android获取手机的版本号等信息的代码...

    本文实例分享了Android获取手机系统版本等信息的方法,供大家参考,具体内容如下: 第一种代码: String phoneInfo = "Product: " + android ...

  8. Android中 根据电话号码获取联系人姓名

    以下是根据一个已知的电话号码,从通讯录中获取相对应的联系人姓名的代码: public String getContactNameFromPhoneBook(Context context, Strin ...

  9. Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日

    public void testGetAllContact() throws Throwable{//获取联系人信息的UriUri uri = ContactsContract.Contacts.CO ...

最新文章

  1. 阿里某leader因年轻下属不主动找活干,提醒对方继续这样绩效不好看,对方竟直接辞职!...
  2. C++ gets, getline ( string流)
  3. Java黑皮书课后题第7章:7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则最小
  4. 从串行线程封闭到对象池、线程池
  5. Python装饰器详解,详细介绍它的应用场景
  6. 算法高级(41)-推荐算法实现
  7. 国内程序员工资是不是被高估了?为什么美国程序员工作少工资高?
  8. Mac如何修改文件默认打开方式?
  9. 2017c语言国二试题,国家计算机c语言二级考试试题
  10. VM虚拟机不被低版本兼容问题
  11. Springboot集成Swagger接口测试工具
  12. 2016 CSDN最佳博客(Android)
  13. $(function) ready onload 等区别
  14. Python的eval函数详解
  15. ai人工智能将替代人类_AI和人类如何优化空气污染监测
  16. 11.18-刷题日结
  17. 夏季繁华系列||妆面照欣赏
  18. nginx、php-fpm以及mysql运行在各个用户下的配置
  19. 28.深度学习模型压缩方法-2
  20. Speedoffice(excel)如何利用SUMPRODUCT函数求和

热门文章

  1. css让footer始终位于页面的最底部
  2. VBA编程之操作单元格
  3. 51单片机入门之五:数码管显示(动态),单片机驱动数码
  4. MuiPlayer - 一款优秀的 H5 视频播放器框架
  5. Facebook第三方登录切换账号的问题
  6. 3DMAX打开模型一直未响应
  7. Linuxftp服务
  8. 联发科MT6580_datasheet/规格书资料分享
  9. facsum (线性筛 积性函数)
  10. 卡特兰(Catalan)数