Android获取手机联系人的方法

发布时间 - 2026-01-11 03:16:59    点击率:

Android 获取系统联系人信息的实例

一、获取手机联系人姓名及手机号

//跳转到系统联系人应用 
Intent intent = new Intent(Intent.ACTION_PICK, 
          ContactsContract.Contacts.CONTENT_URI); 
      try { 
        startActivityForResult(intent, Contacts1RequestCode); 
      } catch (Exception e) { 
        LogManager.e("打开联系人信息失败"); 
      } 

添加权限申请

<uses-permission android:name="android.permission.READ_CONTACTS" /> 

选择联系人并返回

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (Contacts1RequestCode == requestCode) {// 取联系信息返回 
      if (resultCode == RESULT_OK) { 
        Uri contactData = data.getData(); 
        Cursor cursor = getContentResolver().query(contactData, null, 
            null, null, null); 
        //Key联系人姓名,Value联系人手机号 
        Map<String, String> phoneMap = this.getContactPhone(cursor); 
        if (!cursor.isClosed()) { 
          cursor.close(); 
        } 
        if (null != phoneMap && !phoneMap.isEmpty()) { 
          Set<String> keySet = phoneMap.keySet(); 
          if (null != keySet && !keySet.isEmpty()) { 
            Object[] keys = keySet.toArray(); 
            String phoneName = (String) keys[0]; 
            String phoneNo = phoneMap.get(phoneName); 
          } 
        } 
      } 
    } 
  } 
/** 
   * 获取联系人姓名及手机号 
   * 
   * @param cursor 
   * @return Key为联系人姓名,Value为联系人手机号 
   */ 
  private Map<String, String> getContactPhone(Cursor cursor) { 
    Map<String, String> resultMap = new HashMap<String, String>(); 
    String phoneName = null;// 姓名 
    String mobilePhoneNo = null;// 手机号 
 
    if (null != cursor) { 
      cursor.moveToFirst(); 
 
      // 获得联系人的ID号 
      int idFieldIndex = cursor 
          .getColumnIndex(ContactsContract.Contacts._ID); 
      String contactId = cursor.getString(idFieldIndex); 
      // 联系人姓名 
      int idphoneNameIndex = cursor 
          .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 
      phoneName = cursor.getString(idphoneNameIndex); 
 
      // 获得联系人的电话号码的cursor; 
      Cursor allPhones = getContentResolver().query( 
          ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", 
          new String[] { contactId }, null); 
 
      // 所以联系电话(包话电话和手机号) 
      List<String> allPhoneNumList = new ArrayList<String>(); 
      if (allPhones.moveToFirst()) { 
 
        // 遍历所有的电话号码 
        for (; !allPhones.isAfterLast(); allPhones.moveToNext()) { 
          int telNoTypeIndex = allPhones 
              .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); 
          int telNoType = allPhones.getInt(telNoTypeIndex); 
 
          int telNoIndex = allPhones 
              .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
          String telNo = allPhones.getString(telNoIndex); 
          allPhoneNumList.add(telNo); 
 
          if (2 == telNoType) {// 手机号(原生态的SDK定义:mobile是2,home是1,work是3,other是7) 
            mobilePhoneNo = telNo; 
            break; 
          } 
        } 
        if (!allPhones.isClosed()) { 
          allPhones.close(); 
        } 
 
        if (null == mobilePhoneNo) {// 没有存贮手机号 
          if (!allPhoneNumList.isEmpty()) {// 存在其它号码 
            for (String tel : allPhoneNumList) { 
              if (VerifyKit.isLegal(FormatType.MobilePhone, tel)) {// 取属于手机号格式 
                mobilePhoneNo = tel; 
                break; 
              } 
            } 
          } 
        } 
      } 
      if (!cursor.isClosed()) { 
        cursor.close(); 
      } 
 
      resultMap.put(phoneName, mobilePhoneNo); 
    } 
    return resultMap; 
  } 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 获取手机联系人  # 手机联系人获取的实现方法  # Android保存联系人到通讯录的方法  # android如何获取联系人所有信息  # Android ContentProvider实现获取手机联系人功能  # Android编程实现通讯录中联系人的读取  # 查询  # 添加功能示例  # Android仿微信联系人列表字母侧滑控件  # Android实现获取联系人电话号码功能  # android利用ContentResolver访问者获取手机联系人信息  # Android跳转到系统联系人及拨号或短信界面  # 如有  # 遍历  # 希望能  # 谢谢大家  # 跳转到  # 疑问请  # 原生态  # Uri  # RESULT_OK  # Cursor  # contactData  # getData  # super  # requestCode  # int  # onActivityResult  # void  # data  # resultCode  # isClosed 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何创建自定义Artisan命令?(代码示例)  如何在IIS管理器中快速创建并配置网站?  高防服务器如何保障网站安全无虞?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何续费美橙建站之星域名及服务?  如何快速搭建FTP站点实现文件共享?  如何快速生成可下载的建站源码工具?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Android自定义listview布局实现上拉加载下拉刷新功能  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Laravel如何发送系统通知?(Notification渠道示例)  高端建站三要素:定制模板、企业官网与响应式设计优化  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何快速上传建站程序避免常见错误?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Bootstrap CSS布局之列表  Laravel怎么实现模型属性的自动加密  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  常州企业网站制作公司,全国继续教育网怎么登录?  手机网站制作与建设方案,手机网站如何建设?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Swift中循环语句中的转移语句 break 和 continue  中山网站制作网页,中山新生登记系统登记流程?  Laravel如何实现多对多模型关联?(Eloquent教程)  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  公司网站制作价格怎么算,公司办个官网需要多少钱?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel怎么使用artisan命令缓存配置和视图  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何在建站之星网店版论坛获取技术支持?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  如何在云主机快速搭建网站站点?  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  javascript基本数据类型及类型检测常用方法小结  Python文本处理实践_日志清洗解析【指导】  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  南京网站制作费用,南京远驱官方网站?  如何用PHP快速搭建高效网站?分步指南  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】