android短信动态权限设置,Android动态权限申请

从HBuilderX1.9.4及以上版本开始,Android平台默认targetSdkVersion从21(Android5.0)调整为23(Android6.0)。

Android动态权限申请机制

Android6.0(API23)及以后,系统对权限的管理更加严格,放弃了以往manifest中注册所需权限,用户只要安装APP,便获取了所有注册权限的权限管理机制,而是改为除了需manifest中注册,部分危险权限另需在用户使用某项特殊功能时,向用户动态申请的机制。

当用户手机系统为Android6.0及以上,APP的targetSdkVersion>=23时,新的动态权限申请机制将会被触发,其它所有情况(1.系统版本>=6.0,targetSdkVersion<23;2.系统版本<6.0,targetSdkVersion>=23;3.系统版本<6.0,targetSdkVersion<23)都不会触发动态权限申请机制,因此,如果你不想在APP中动态申请权限,可以将targetSdkVersion设置为小于23。如不然,你就需要在使用某些涉及危险权限的功能(如读取通讯录)时通过系统弹窗的形式向用户动态申请该权限。动态申请权限下,如果用户在权限申请弹窗中拒绝了该申请,则用户将不能使用需要该权限的功能,再次申请该权限时依然会弹窗向用户申请;若用户在权限申请弹窗中勾选了“不再提示”并拒绝,那么再次申请该权限的时候将不会弹出系统弹窗向用户申请权限,此时需要APP引导用户打开设置,在设置中给与APP所需权限。

注意:云端打包targetSdkVersion默认值为26

5+APP中动态权限申请机制的实现

5+APP各独立模块中已经集成了功能所需权限的动态申请机制,开发者无需另做处理。但是如果需要使用某些尚未集成的特殊功能,如通过native.js调用原生方法获取手机扫描到的wifi列表,由于android可以通过访问wifi获取位置信息,因此需要在使用原生方法前先动态申请该功能所需的ACCESS_FINE_LOCATION权限。正因为有这样的需求,DCloud在native.js中为Android提供了动态申请权限的功能。

开发者通过调用plus.android.requestPermissions申请权限。参数permissions为所需权限数组;resultCallback为申请结果回调,将会返回已获取的权限、拒绝本次申请的权限、永久拒绝申请的权限3种结果的权限列表,开发者可以读取各权限申请结果并做相应处理;errorCallback为权限参数格式错误时调用,返回错误信息。

代码举例

依然以获取wifi列表为例,使用该功能前需要开发者先申请所需权限ACCESS_FINE_LOCATION:

function requestPermission() {

plus.android.requestPermissions(

["android.permission.ACCESS_FINE_LOCATION"],

function(resultObj){

for (var i = 0; i < resultObj.granted.length; i++) {

var grantedPermission = resultObj.granted[i];

console.log('已获取的权限:'+ grantedPermission);

}

for (var i = 0; i < resultObj.deniedPresent.length; i++) {

var deniedPresentPermission = resultObj.deniedPresent[i];

console.log('拒绝本次申请的权限:'+ deniedPresentPermission );

}

for (var i = 0; i < resultObj.deniedAlways.length; i++) {

var deniedAlwaysPermission = resultObj.deniedAlways[i];

console.log('永久拒绝申请的权限:'+ deniedAlwaysPermission);

}

// 若所需权限被永久拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限

if (resultObj.deniedAlways.length > 0) {

var Intent = plus.android.importClass("android.content.Intent");

var Settings = plus.android.importClass("android.provider.Settings");

var Uri = plus.android.importClass("android.net.Uri");

var mainActivity = plus.android.runtimeMainActivity();

var intent = new Intent();

intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);

intent.setData(uri);

mainActivity.startActivity(intent);

}

},

function(error){

console.log('申请权限错误:'+ error.code+ " = "+ error.message);

});

}

引导用户打开所需权限的方法分析

当需要引导用户打开特定权限时,最理想的情况是打开一个只有该权限开关的页面让用户开启权限,但是Android会将应用申请的所有权限集中在一个页面,因此从Android系统提供的功能的角度讲,最好是能引导用户进入应用的权限管理页面,在这个页面中让用户根据提示打开相应权限。然而,国内厂商早在Android未提供动态权限申请功能时就对Android应用的权限申请进行了改造和封装,这就使开发者无法通过统一的入口进入应用权限管理页面,而需要通过各个厂商自己的入口进入,如

// 华为

Intent intent = new Intent(packageName);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");

intent.setComponent(comp);

mContext.startActivity(intent);

// 魅族

Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");

intent.addCategory(Intent.CATEGORY_DEFAULT);

intent.putExtra("packageName", packageName);

mContext.startActivity(intent);

这无疑加大了开发难度。而且各厂商更可能随着版本的升级更改权限管理入口,这就加大了开发的不确定性。因此,我们推荐的最理想的引导用户打开权限的入口是应用设置页面,然后用户通过点击“权限管理”自主进入权限管理页面进行相关权限的设置。

5+APP中利用native.js打开应用设置页面的方法见上方代码举例。

附Android危险权限列表

SMS(短信)

android.permission.SEND_SMS

android.permission.RECEIVE_SMS

android.permission.READ_SMS

android.permission.RECEIVE_WAP_PUSH

android.permission.RECEIVE_MMS

STORAGE(存储卡,包括相册等)

android.permission.READ_EXTERNAL_STORAGE

android.permission.WRITE_EXTERNAL_STORAGE

CONTACTS(联系人)

android.permission.READ_CONTACTS

android.permission.WRITE_CONTACTS

android.permission.GET_ACCOUNTS

PHONE(手机)

android.permission.READ_PHONE_STATE

android.permission.CALL_PHONE

android.permission.READ_CALL_LOG

android.permission.WRITE_CALL_LOG

android.permission.ADD_VOICEMAIL

android.permission.USE_SIP

android.permission.PROCESS_OUTGOING_CALLS

CALENDAR(日历)

android.permission.READ_CALENDAR

android.permission.WRITE_CALENDAR

CAMERA(相机)

android.permission.CAMERA

LOCATION(位置)

android.permission.ACCESS_FINE_LOCATION

android.permission.ACCESS_COARSE_LOCATION

SENSORS(传感器)

android.permission.BODY_SENSORS

MICROPHONE(麦克风)

android.permission.RECORD_AUDIO

相关问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 获取对话框对象,Android 基本Dialog和自定义Dialog

Android 基本Dialog和自定义DialogDialog类是对话框的基类&#xff0c;但你应该避免直接实例化Dialog ,可以使用子类1.AlertDialog 此对话框可以显示标题&#xff0c;最多三个按钮&#xff0c;可选择列表或自定义布局View.2.DatePickerDialog或TimePickerDialog 此对话框带有允…

android inset 标签,android – 有几个WindowInsets?

WindowInsets描述了一组窗口内容的插图.换句话说,WindowInsets有一个可用的应用程序区域(并有其他信息,如isRound).可用区域不包括StatusBar和NavigationBar的Rect.如果您只想知道StatusBar和NavigationBar的高度,请查看this.你可以得到如下的WindowInsets.以下示例使用WindowI…

android root截图软件下载,截屏软件(无需ROOT)

ScreenshotIt是一款功能简单而专一的小软体&#xff0c;利用它你能够非常方便的对你的Android手机进行捉图操作&#xff0c;并将截取的萤幕快照储存为图片。软体功能&#xff1a;-裁剪你的萤幕截图&#xff1b;-萤幕截图状态栏按键&#xff1b;-可以利用重力感应来截图(摇晃手机…

android toolbar源码解析,深入理解Android 5.0中的Toolbar

环境说明&#xff1a;Android Studio 2.0V7包版本&#xff1a;com.android.support:appcompat-v7:23.4.0compileSdkVersion 23buildToolsVersion "24.0.0"Toolbar 引入使用XML布局中加入&#xff1a;android:id"id/toolbar"android:layout_width"matc…

android 9图片报错,Android2.1加载9Patch图片运行后报错

今天遇到一个很无语的问题&#xff0c;竟然是9Patch图片上多加了光晕效果。因为需要自定义Button&#xff0c;所以请用了9Patch图片&#xff0c;而且图片上面还有一点光晕效果&#xff0c;同样也被拉伸了&#xff0c;在2.2的系统上面正常能跑&#xff0c;2.1上面就出问题&#…

鸿蒙系统发布IT直播,华为开源平台上线:鸿蒙系统、方舟编译器在列

华为近日官方宣布&#xff0c;方舟编译器将于8月31日正式开源。这一颠覆式的技术堪称安卓系统性能革命&#xff0c;将带来巨大的性能提升&#xff0c;官方称操作流畅度提升可高达60&#xff05;。8月31日凌晨&#xff0c;华为开源平台网站(HUAWEI OpenSource)就迫不及待地悄然上…

html网页之间怎么切换效果,HTML教程:网页页面切换的各种效果-♚付涛纪实阁♚...

其中,n表示的就是下面的数&#xff0c;n取不同的值&#xff0c;对应有不同的效果&#xff1a;0、box in 1、box out 2、circle in 3、circle out 4、wipe up 5、wipe down 6、wipe right 7、wipe left 8、vertical blinds 9、horizontal blinds 10、checkerboard across 11、ch…

火车头采集html文档没内容,火车头采集器:编辑任务中常见问题

1.标题前面大量空白&#xff0c;应该如何采集&#xff1f;答&#xff1a;程序里有html过滤选项&#xff0c;你可以选中过滤这些空白字符,如果有些空白字符不在html过虑里,你可以在过滤选项里添加那些字符。2.同一个页面&#xff0c;很多相同内容&#xff0c;怎么分做为多条记录…

金字塔图表 html,Highcharts 柱形图(柱状图及条形图)之 金字塔图 演示

JS 代码&#xff1a;var categories [0-4, 5-9, 10-14, 15-19,20-24, 25-29, 30-34, 35-39, 40-44,45-49, 50-54, 55-59, 60-64, 65-69,70-74, 75-79, 80-84, 85-89, 90-94,95-99, 100 ];var chart Highcharts.chart(container, {chart: {type: bar},title: {text: 2015 年德…

angular html页面嵌套,使用AngularJS来实现HTML页面嵌套的方法

html不支持嵌入在html页面中的html页面。实现这一功能通过使用以下方式&#xff1a;使用ajax - 让一台服务器来调用获取相应的html页面&#xff0c;并将其设置在html控件的innerhtml。使用服务器端包含 - jsp&#xff0c;php等web端服务器技术可以在包括动态页面中的html页面。…

jquery属于html框架吗,jquery是前端框架吗?

jquery是前端框架吗&#xff1f;jquery不是前端框架&#xff0c;它是一个JavaScript库。框架与库之间最本质区别在于控制权&#xff1a;you call libs, frameworks call you(控制反转)库&#xff1a;库是一个封装好的特定的集合&#xff0c;提供给开发者使用&#xff0c;而且是…

html ajax 菊花,Ajax加载菊花loding效果

Ajax 异步请求的时候&#xff0c;一般都会利用一个动态的 gif小图片来制作一个Ajax Loading &#xff0c;以便增加用户体验。这里我们使用Spin.js &#xff0c;该 js 脚本压缩后5k&#xff0c;可以不用任何图片&#xff0c;任何外部的CSS样式&#xff0c;就可以创建一个Ajax Lo…

ios html gif 显示,显示gif时出现巨大的内存使用Swift iOS

我正在制作一个应用程序&#xff0c;它在UIImageView中显示gif&#xff0c;并从parse中加载gif。我偶然发现的问题是每当我加载一个Gif时&#xff0c;它会使用大约20 MB的内存&#xff0c;并且当我执行一个segue时&#xff0c;这个内存不会被分配。我从UIImageView中删除图像本…

非一体式台式计算机,一体台式机推荐及介绍【详解】

随着科技的不断发展电脑已经走进了家家户户&#xff0c;几乎每一个家庭都有一台甚至是两台电脑&#xff0c;人们对于电脑的需求越来越高&#xff0c;对于电脑的要求也就越来越大。不仅仅是在性能方面外观设计也很重要。随着人们对于更轻更薄的追求&#xff0c;电脑渐渐的开始走…

窄带物联网应用于工业计算机,工业物联网嵌入式边缘计算机的制作方法

本实用新型涉及工业物联网领域&#xff0c;具体地说是一种工业物联网嵌入式边缘计算机。技术背景加速发展物联网已成国际社会的战略共识&#xff0c;多国纷纷都在加快研发物联网技术&#xff0c;物联网已经升级到了国家级战略目标。传统制造业企业由于工厂中设备型号不一致、新…

计算机网络模拟器 mac,网易mumu模拟器mac版使用常见问题解决办法_3DM手游

不少Mac设备的用户&#xff0c;在使用网易MuMu模拟器时&#xff0c;都会遇到些许问题。关于大家在使用网易MuMu模拟器Mac版时经常会出现的问题&#xff0c;下面小编也为大家带来了一个FAQ。网易MuMu常见问题解答&#xff1a;1、Mac版安装环境操作系统&#xff1a;mac os 10.11.…

如何让cloudflare缓存html,CloudFlareCDN页面规则缓存设置教程

wordpress博客使用CloudFlare的CDN来加速网站(页面规则缓存设置教程)此篇文章只讲wordpress站点使用CloudFlare CDN的页面规则教程。CloudFlare的CDN有一个很好的特点就是可以整站缓存下来&#xff0c;但是整站缓存时我们是无法登陆后台的&#xff0c;新写的文章也无法预览。所…

855计算机应用基础,2017年曲阜师范大学信息技术与传播学院855计算机应用基础考研导师圈点必考题汇编...

一、选择题1&#xff0e; 有以下程序&#xff1a;程序运行后的输出结果是( )。A.1256B.5634C.5612D.3456【答案】B【解析】第一次funl 传递参数5, 6&#xff0c;输出5, 6, 第二次调用fun2&#xff0c;fun2的作用是将全局变量a 变为3, b 变为4, 故输出3, 4。2&#xff0e; 有以下…

计算机课中排序选什么,《计算机应用基础课件》1.6 排序复习课程.ppt

《计算机应用基础课件》1.6 排序复习课程.ppt第 1 章  数据结构 ;插入排序的基本思想&#xff1a;;1.直接插入排序: 思路&#xff1a;认可第1个记录已排好序&#xff0c;然后将第2个到第n个记录依次插入到前面已排好序的记录组成的文件中。 具体过程(第i个记录Ri插入到前面i-1…

计算机图形设计论文 真实图形生成技术的发展,绘制技术论文,关于计算机图形图像绘制技术的现状应用相关参考文献资料-免费论文范文...

导读:这是一篇与绘制技术论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考。(四川建筑职业技术学院,德阳618000)(Sichuan College of Architectural Technology,Deyang 618000,China)宗海图绘制技术规范:画 干画笔 绘制技术摘 要&#xff1a; 随着计算机图形图像…