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

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

官方讲解:

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

/*

* 权限设置

*/

var platform = uni.getSystemInfoSync().platform

onAddressBookSetting: function() {

if (this.isShow) {

return

}

this.isShow = true

uni.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位,中间没有空格,座机号不显示等等,则你需要对你获取到的手机号进行另外的处理之后在存

android+读取电话权限,【uniapp】 读取手机通讯录权限相关推荐

  1. 【uniapp】 读取手机通讯录权限

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

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

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

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

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

  4. uniapp获取手机App权限

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

  5. 联想 android 5.1 root权限,联想A520手机ROOT权限图文教程(附联想A520root工具)

    联想A520 ROOT教程: 2.将手机USB调试打开; 步骤:设置----应用程序----开发-----USB调试 设置----应用程序----未知源,后面的勾打上就行; 3.打开了USB调试和未知 ...

  6. [Android] 使用完美刷机开启手机Root权限

    1. 源起 在进行Android开发的时候,如果没有Root权限,那么有时候是很痛苦的.因为SQLite编辑器.翻墙代理.Host文件修改器等工具都需要Root权限才能工作. 2. 方法 完美刷机软件 ...

  7. android root注意事项,菜鸟获取手机root权限前不得不看的几点注意事项

    菜鸟获取手机root权限前不得不看的几点注意事项 菜鸟和新手们在刚接触的时候都会觉的安卓手机刷机好复杂等等,其中就有一项ROOT权限,很多机友不知道root是什么意思,不会root,下面见简单的说说常 ...

  8. android app读取短信,uni-app读取短信

    在我们的日常开发中,我们可能会遇到,读取用短信中的验证码,然后实现一个自动填充的功能. 但是呢,在插件市场,我暂时还没有找到相应的插件,来使用, 所以呢,我想到了一种曲线的方式,那就是获取到设备的短信 ...

  9. java获取手机通讯录权限_iOS6 中如何获得通讯录访问权限

    在iOS 6中,以前工作正常的访问通讯录的iPhone程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在"设置->隐私->通讯录"中看不到你的程序 ...

最新文章

  1. 炎热的夏天过去了,老司机用Python带你爬爬哪个城市最热
  2. php编程题试题和答案,比较基础的php面试题及答案-编程题部分
  3. python课程价格哪个好-python课程价格
  4. Ubuntu 14.04 安装SSH
  5. 如何在 IntelliJ IDEA 中快速生成 JavaDoc 注释模板
  6. linux版本photoshop,在linux上使用ps(转载)
  7. 微信墙服务器地址,一面微信墙的诞生(3) 用户端界面的创建
  8. java的核心类库_Java核心类库,集合框架
  9. python将图片转动漫_python实现了照片转化为动漫模式
  10. CentOS 7搭建tengine+php+mariadb环境并安装discuz论坛
  11. 图文讲解:iOS App提交流程
  12. 20171208校内训练
  13. 360手柄摇杆漂移修复_「超逸酷玩」电脑游戏还用在用键盘?不妨试试斯巴达2手柄无线版...
  14. ROS安装教程(详细)
  15. 41局域网交换机及其基本原理
  16. 机械师笔记本电脑屏幕使用过程中忽然变暗
  17. matlab画心形线
  18. 教你几招!做客服怎么应对物流太慢的问题
  19. 关于JS获取clientWidth大小一直为0的问题
  20. 计算机名打印机无法共享,win10系统打印机无法共享的解决方案

热门文章

  1. 如何解决在线医疗语音问诊的技术难题 | 以眩晕问诊为例
  2. 常见的电脑运行卡顿原因及解决方法
  3. Mac环境下Tron 部署教程
  4. HTTP浏览器输入URL后发生了什么
  5. 餐饮行业的营销策略是什么?
  6. 手机网站点击手机号码直接拨号
  7. Spring cacheable
  8. 软件测试中的“保险项目”讲解
  9. error: You have not concluded your merge (MERGE_HEAD exists).
  10. 使用Python库valuequant和利润表历史数据计算股权价值