Android 获取联系人姓名和电话号码信息
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 获取联系人姓名和电话号码信息相关推荐
- Android 获取联系人姓名与电话号码
权限 <uses-permission android:name="android.permission.READ_CONTACTS" /> 跳转通讯录界面 findV ...
- android请输入姓名代码,Android获取联系人姓名和电话代码
在开发中往往有要获取联系人列表的功能,但是这次却不是获取联系人列表,而是在联系人列表点击单个联系人,获取单个联系人的姓名和电话,并设置在指定的输入框内,方便用户的使用:以下是实现的代码: androi ...
- android 通过电话号码来获取联系人姓名
通过电话号码来获取联系人姓名的程序如下,通过ContactsContract.PhoneLookup.CONTENT_FILTER_URI来获取对应adress(电话号码)的信息. private S ...
- [置顶] Android代码----android获取3G或wifi流量信息
android获取3G或wifi流量信息: IBatteryStats battryStats = IBatteryStats.Stub.asInterface(ServiceManager.getS ...
- android+头像+程序,Android获取联系人头像的方法
本文实例讲述了Android获取联系人头像的方法.分享给大家供大家参考,具体如下: public byte[] getPhoto(String people_id) { String photo_id ...
- android dhcp 服务器,android 获取当前手机的 DHCP 信息ip,server 等操作实例教程
android 获取当前手机的 DHCP 信息ip,server 等操作实例教程WifiManager wifiManager = (WifiManager) getSystemService(Con ...
- android获取手机和系统版本等信息的代码,Android获取手机的版本号等信息的代码...
本文实例分享了Android获取手机系统版本等信息的方法,供大家参考,具体内容如下: 第一种代码: String phoneInfo = "Product: " + android ...
- Android中 根据电话号码获取联系人姓名
以下是根据一个已知的电话号码,从通讯录中获取相对应的联系人姓名的代码: public String getContactNameFromPhoneBook(Context context, Strin ...
- Android 获取联系人手机号码、姓名、地址、公司、邮箱、生日
public void testGetAllContact() throws Throwable{//获取联系人信息的UriUri uri = ContactsContract.Contacts.CO ...
最新文章
- 阿里某leader因年轻下属不主动找活干,提醒对方继续这样绩效不好看,对方竟直接辞职!...
- C++ gets, getline ( string流)
- Java黑皮书课后题第7章:7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则最小
- 从串行线程封闭到对象池、线程池
- Python装饰器详解,详细介绍它的应用场景
- 算法高级(41)-推荐算法实现
- 国内程序员工资是不是被高估了?为什么美国程序员工作少工资高?
- Mac如何修改文件默认打开方式?
- 2017c语言国二试题,国家计算机c语言二级考试试题
- VM虚拟机不被低版本兼容问题
- Springboot集成Swagger接口测试工具
- 2016 CSDN最佳博客(Android)
- $(function) ready onload 等区别
- Python的eval函数详解
- ai人工智能将替代人类_AI和人类如何优化空气污染监测
- 11.18-刷题日结
- 夏季繁华系列||妆面照欣赏
- nginx、php-fpm以及mysql运行在各个用户下的配置
- 28.深度学习模型压缩方法-2
- Speedoffice(excel)如何利用SUMPRODUCT函数求和