现在很多APP,市场需求都需要读取我们手机上的相关权限,例如WX要读取通讯录,相册,照相机等权限,其他APP亦如此

但是在获得这些权限之前我们首先需要征得用户的统一之后才能读取

官方讲解:

https://www.html5plus.org/doc/zh_cn/contacts.html

/** 权限设置*/var platform = uni.getSystemInfoSync().platformonAddressBookSetting: function() {if (this.isShow) {return}this.isShow = trueuni.showModal({title: '提示',content: 'APP通讯录权限没有开启,是否开启?',success(res) {if (res.confirm) {if (platform == 'ios') {var UIApplication = plus.ios.import("UIApplication");var NSURL2 = plus.ios.import("NSURL");var setting2 = NSURL2.URLWithString("app-settings:");var application2 = UIApplication.sharedApplication();application2.openURL(setting2);plus.ios.deleteObject(setting2);plus.ios.deleteObject(NSURL2);plus.ios.deleteObject(application2);} else {var main = plus.android.runtimeMainActivity();var bulid = plus.android.importClass("android.os.Build");var Intent = plus.android.importClass('android.content.Intent');if (bulid.VERSION.SDK_INT >= 9) {var intent = new Intent('android.settings.APPLICATION_DETAILS_SETTINGS');var Uri = plus.android.importClass('android.net.Uri');var uri = Uri.fromParts("package", main.getPackageName(), null)intent.setData(uri);intent.putExtra('android.content.Intent.setFlags', Intent.FLAG_ACTIVITY_NEW_TASK);} else if (bulid.VERSION.SDK_INT <= 8) {var intent = new Intent(Intent.ACTION_VIEW);intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");intent.putExtra("com.android.settings.ApplicationPkgName", main.getPackageName());intent.putExtra('android.content.Intent.setFlags', Intent.FLAG_ACTIVITY_NEW_TASK);}main.startActivity(intent);this.isShow = false}} else {uni.navigateBack({delta: 1})}}})},

读取手机通讯录相关数据

注意:phoneNumbers 是一个数组,可以console一下,只取自己所需要的的数据,避免数据量过大导致读取数据然后现在在手机上耗时缓慢;

对于数据量过大的操作,可以设置一个一个时间段内的缓存,这样既保证了用户访问APP是可以快速显示,有保证了通讯录数据的较及时更新性

/* * 初始化通讯录*/initContacts: function() {//获取手机通讯录plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, (addressbook) => {addressbook.find(["displayName", "phoneNumbers"], (contacts) => {let temp = [];contacts.forEach((item) => {let FirstE = this._parseChar(item.displayName);let unicode = FirstE.charCodeAt();let index = parseInt(unicode - 65);let text = item.displayName.slice(0, 1)item.phoneNumbers.forEach(item_phone => {item_phone.value = this.GetMobile(item_phone.value)this.IsInvitedFun(item_phone.value);let contact = {'text': text,'name': item.displayName,'phone': item_phone.value,}temp = this.dataArr[index].Arr == undefined ? [] : this.dataArr[index].Arr;let string=JSON.stringify(temp);if (string.indexOf(item_phone.value) == -1) {temp.push(contact);}this.dataArr[index].Arr = temp;});});this.contactItems = JSON.parse(JSON.stringify(this.dataArr))}}, (e) => {this.onAddressBookSetting()});}, (e) => {this.onAddressBookSetting()});},

其他tip :每一个人的存储电话的方式都不一样手机型号不一样,所以可能很多手机号码都不规范,比如手机号码中有很多空格,手机号码之前有+86,如果你对手机号码的格式要求不严,则不需要另外去处理,但是如果你对手机号码的格式要求比较严格,只能有11位,中间没有空格,座机号不显示等等,则你需要对你获取到的手机号进行另外的处理之后在存

【uniapp】 读取手机通讯录权限相关推荐

  1. android+读取电话权限,【uniapp】 读取手机通讯录权限

    现在很多APP,市场需求都需要读取我们手机上的相关权限,例如WX要读取通讯录,相册,照相机等权限,其他APP亦如此 但是在获得这些权限之前我们首先需要征得用户的统一之后才能读取 官方讲解: https ...

  2. uniapp 读取手机 通讯录 分组

    最近在做跨平台开发,用到了读取通讯录的功能,但是读取到的通讯录未实现分组,这个应该是H5标准的问题,具体参考以下文档: https://www.html5plus.org/doc/zh_cn/cont ...

  3. java获取手机通讯录权限_Android读取手机通讯录联系人到自己项目

    本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下 一.主界面代码如下: android:layout_width="match_parent& ...

  4. iOS程序猿之读取手机通讯录

    读取手机通讯录 如今很多app都有读取手机联系人的需要,最近项目也遇到了类似的需求,这里整理下 从iOS开始,苹果废弃了以前复杂的AddressBookFramework,使用非常简单易用的Conta ...

  5. 最快速读取手机通讯录中联系人信息

    作为一名Android开发,读写手机通讯录的操作人人都会,但是有没有遇到通讯录存在好几百条联系人信息时候读取的速度会明显变慢呢?本文就是介绍解决办法,我总结出了以下几种办法 提供参考: 一.线程 有A ...

  6. uniapp获取手机App权限

    uniapp中有些获取权限的方法是不适用于APP和WEB端的,这个时候就需要用其他方法来实现 1.首先第一步我们需要做的就是下载一个hbuilderx封装好的插件(下载链接) 也可以直接复制下面代码进 ...

  7. Android开发 读取手机通讯录

    目录 一.通讯录界面布局 activity_contact.xml 界面布局: contact_item.xml 条目界面布局: item_bg.xml 条目界面的背景文件(drawable文件夹中创 ...

  8. java获取手机通讯录权限_android获取手机通讯录

    1:androidmanifest.xml的内容 package="cn.itcast.contacts" android:versionCode="1" an ...

  9. arr 安卓调用qmui_MUI框架-读取手机通讯录

    mui.plusReady(function() { getContactsFromPhone(function(contactsArr) { }); }); var contact_arr = [] ...

最新文章

  1. 北大教授吴玺宏:从发声到语言,具身物理模型让NLP回到小数据时代
  2. 行代码实现数据集可视化、分析与比较
  3. WebSocket客户端连接断开后,服务器端的析构处理
  4. mysql sleep详解_sql注入详解(二)
  5. 全面认识 RUST -- 掌控未来的雷电
  6. nb-iot 华为云_海曼NB-IoT智慧消防解决方案通过华为云资格审核,正式入驻华为云市场...
  7. 一款 SQL 自动检查神器!
  8. java服务器 protobuf_服务器端用PHP,客户端用JAVA,通过protobuf互相通信[原创] | 学步园...
  9. java多线程下载图片_java多线程批量下载图片(通用版)
  10. VisionMaster基础版教程汇总
  11. 海量数据高并发的解决方案
  12. java字符转换成16进制_java 16进制与字符串直接相互转换
  13. python桌面整理小助手
  14. qPCR检测基因表达的引物数据库
  15. 中超联赛首轮 山东鲁能一球小胜
  16. C# 控制台程序 打开窗体
  17. Linux(centos7) 安装配置gitlab-runner
  18. 变量定义、赋值、初始化
  19. 关于AP, MAP的一些理解
  20. 微信小程序开发入门与实战 ②(小程序与前端开发的区别)

热门文章

  1. 普通人学会Python到底具体能做什么呢?
  2. 聊天窗口怎么用计算机,在电脑上用键盘快速打开聊天窗口的快速键是什么键?...
  3. Unity HDRP Volume框架 — Lighting(光照)
  4. 福昕PDF开启多实例
  5. 客户数据成为营销必备!成功关键是挖掘数据价值
  6. CentOS 7 安装搜狗拼音输入法
  7. C++进程间通信 详解2
  8. 【顶】(与同事合作的快乐)技术人员也需要先学会做人,再学会做事,再是能成事,最后是成名得利
  9. Tableau权限设置方法
  10. adblockplus简单介绍