Android中使用shouldShowRequestPermissionRationale判断 ...

文章推薦指數: 80 %
投票人數:10人

shouldShowRequestPermissionRationale字面意思看是应该显示请求权限原因已经通过的权限,方法返回为true 禁止权限,方法返回为true 禁止且不再询问权限, ... Android中使用shouldShowRequestPermissionRationale判断权限被禁止 置顶 Z_yq 于 2019-06-0710:41:03 发布 10097 收藏 12 分类专栏: 安卓开发技术 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/yeluofengchui/article/details/91126163 版权 安卓开发技术 专栏收录该内容 23篇文章 0订阅 订阅专栏 转载请注明出处:https://blog.csdn.net/yeluofengchui/article/details/91126163 前言 Android6.0之后的有些权限需要去动态获取,这个过程中呢,我们或许会遇到这么几个方法。

1.ContextCompat.checkSelfPermission检查权限是否允许2.ActivityCompat.requestPermissions请求某个或某几个权限3.onRequestPermissionsResult手动请求权限之后的结果回调4.shouldShowRequestPermissionRationale??? 其中前三个的用途都非常清楚,大家也都知道怎么用的,这里不做过多解释,今天主要看下咱们的主角shouldShowRequestPermissionRationale,看下它是干什么用的。

从shouldShowRequestPermissionRationale这么长的方法名,解释出来就是“应不应该解释下请求这个权限的目的”,接下来,咱们先看它的官方注释。

官方解释 /** *GetswhetheryoushouldshowUIwithrationaleforrequestingapermission. *Youshoulddothisonlyifyoudonothavethepermissionandthecontextin *whichthepermissionisrequesteddoesnotclearlycommunicatetotheuser *whatwouldbethebenefitfromgrantingthispermission. *

*Forexample,ifyouwriteacameraapp,requestingthecamerapermission *wouldbeexpectedbytheuserandnorationaleforwhyitisrequestedis *needed.Ifhowever,theappneedslocationfortaggingphotosthenanon-tech *savvyusermaywonderhowlocationisrelatedtotakingphotos.Inthiscase *youmaychoosetoshowUIwithrationaleofrequestingthispermission. *

* *@paramactivityThetargetactivity. *@parampermissionApermissionyourappwantstorequest. *@returnWhetheryoucanshowpermissionrationaleUI. 蹩脚翻译 获取是否应显示具有请求权限理由的UI,只有在没有权限并且上下文的情况下不能清晰明了的表明为什么需要这个权限时才应该这样做。

举例,你要是实现一个照相的app,用户可以明白你为什么需要照相的权限,然而app却需要定位信息去给照片做标注,一个非技术又精明的用户可能很好奇一个拍照APP怎么会想要定位权限。

在这种情况下您可以选择在请求定位权限之前先在UI上解释下为什么需要它。

返回:你是否可以展示权限的解释说明 看完之后你明白了吗?讲真,我是真不明白,这段注释只说明了Google工程师设计这个方法的初衷是什么,具体有什么功能,怎么用的,从这里我真的还看不错来。

#网络资源参考Android6.0动态权限shouldShowRequestPermissionRationale的含义这篇文章,说明的是比较有价值的: 以某个权限为例,1.第一次请求权限时ActivityCompat.我使用的是8.0系统的手机=false;2、第一次请求权限被禁止,但未选择【不再提醒】ActivityCompat.shouldShowRequestPermissionRationale=true;3、允许某权限后ActivityCompat.shouldShowRequestPermissionRationale=false;4、禁止权限,并选中【禁止后不再询问】ActivityCompat.shouldShowRequestPermissionRationale=false;文章中记录的结果和我真实手机跑程序打印的结果是一致的(我使用的是8.0系统的手机)。

shouldShowRequestPermissionRationale的功能价值何在 在此之前先说明下,由于不同的系统厂商定制的结果,1.有的手机某些权限清单注册了权限就能用,不用动态申请(因为系统会在安装时自动app分配一些权限,具体怎么分配的这里暂不做讨论);2.有的手机在弹出授权时选择拒绝就默认了不再弹出;3.有的沿用了原生系统的规则;4.设置-应用-权限中权限分“允许、询问、拒绝”三个级别,但是有的权限只有“允许、拒绝”两个级别; 这里先统一下名词:允许–权限通过拒绝–拒绝了但是还允许询问禁止–拒绝了且不再允许询问(如4中所述的“拒绝”先定义为禁止) 从前面就可以看出来,这个方法大部分情况下是放回false的,只有被用户拒绝了权限,再次获取才会得到true;如果没有申请过,或者禁止了权限,都是返回的false。

所以很多人想要通过shouldShowRequestPermissionRationale去判断是否权限被禁止,有时候是并不准确的,真要说怎样会准确的获取到权限被禁止的情况,那就是: 1.在requestPermissions之后在onRequestPermissionsResult中获取到没给权限,并且shouldShowRequestPermissionRationale是false,此时可以认定该权限被用户禁止了;2.还有一个点是是在onRequestPermissionsResult的参数值第三个参数grantResults是null,此时权限也是被拒绝的。

(权限被拒绝后再次调用requestPermissions,没有返回结果) 总结 shouldShowRequestPermissionRationale,回到最初的解释“应不应该解释下请求这个权限的目的”。

1.都没有请求过这个权限,用户不一定会拒绝你,所以你不用解释,故返回false;2.请求了但是被拒绝了,此时返回true,意思是你该向用户好好解释下了;3.请求权限被禁止了,也不给你弹窗提醒了,所以你也不用解释了,故返回fasle;4.请求被允许了,都给你权限了,还解释个啥,故返回false。

Google的初衷大概就是第一次requestPermissions的时候被拒绝时给你一次解释的机会,所以是让你在请求权限的回调中使用的。

#其它动态权限的适配就是检测、请求,然后看回调,再通过了权限后再去执行自己的方法,但是真正用的时候又很麻烦,每次调用相机、短信、打电话、访问通讯录、定位等等都要请求权限,写一堆跟业务无关的代码,是不是很烦呢?最近整理了一个关于方便管理动态权限的库,一个EasyPermission的权限管理库,帮你申请动态权限附github源码:https://github.com/githubZYQ/easypermission 转载请注明出处:https://blog.csdn.net/yeluofengchui/article/details/91126163 Z_yq 关注 关注 9 点赞 踩 12 收藏 打赏 1 评论 Android中使用shouldShowRequestPermissionRationale判断权限被禁止 前言Android6.0之后的有些权限需要去动态获取,这个过程中呢,我们或许会遇到这么几个方法。

1.ContextCompat.checkSelfPermission检查权限是否允许2.ActivityCompat.requestPermissions请求某个或某几个权限3.onRequestPermissionsResult手动请求权限之后的结果回调4.shouldShowReq... 复制链接 扫一扫 专栏目录 Android6.0动态权限shouldShowRequestPermissionRationale的含义 wangpf2011的博客 06-06 3万+ 一个老生常谈的问题,关于Android6.0及以后版本对动态权限的处理方法。

这里主要说说在处理动态权限时一个重要的方法ActivityCompat.shouldShowRequestPermissionRationale(context,permission),相信大部分人都不陌生,但他具体什么意思可能有部分人又很模糊,今天用示例演示下这个方法的含义。

APP调用一个需要权限的函数时,如果用户... android申请权限,对点击拒绝和允许的处理 zhang106209的博客 06-04 4943 1.在App中申请权限:privatefinalintREQ_RECORD=111; String[]unPermits=PermissionUtils.getUnGrantedPermission (permissions); if(!ListUtils.isEmpty(unPermits)){//没有申请权限时 ... 评论 1 您还未登录,请先 登录 后发表或查看评论 android权限管理之判断禁止后不再提示 qq_41790490的博客 01-19 3625 权限 Android怎么通过代码判断是否权限被禁止 月十二 08-31 6036 //如读写权限 privatebooleancheckWriteExternalPermission() {   Stringpermission="android.permission.WRITE_EXTERNAL_STORAGE";   intres=getContext().checkCallingOrSelfPermission(permission); Android权限管理之shouldShowRequestPermissionRationale() 格物致知的专栏[音视频编解码网络协议计算机视觉计算机图形学图像理解语音识别机器学习模拟电路传感器] 04-09 480   Android6.0以后对于一些隐私权限(例如定位、读写等)需要动态申请,权限申请过后根据用户的选择,我们可以在回调中处理拒绝后怎样或者同意后怎样,但是还有一个选项是“不再提醒”。

  一般情况下,用户勾选了“不再提醒”的选项,我们可以通过shouldShowRequestPermissionRationale()的返回值判断,true表示没有勾选“不再提醒”,而false则表示勾选了“不... shouldShowRequestPermissionRationale权限 meishuang2306的博客 05-28 765 shouldShowRequestPermissionRationale1,在允许询问时返回true;2,在权限通过或者权限被拒绝并且禁止询问时返回false但是有一个例外,就是重来没有询问过的时候,也是返回的false所以单纯的使用shouldShowRequestPermissionRationale去做什么判断,是没用的,只能在请求权限回调后再使用。

Google的原意是:1,没有申请过权限,申请就是了,所以返回false;2,申请了用户拒绝了,那你就要提示用户了,所以返回true; Android6.0动态权限shouldShowRequestPermissionRationale u013624014的博客 12-27 1163 shouldShowRequestPermissionRationale字面意思看是应该显示请求权限原因 已经通过的权限,方法返回为true 禁止权限,方法返回为true 禁止且不再询问权限,方法返回为false,需要到应用设置中开启权限 ... 关于shouldShowRequestPermissionRationale好记一点的解释说明 比特零的专栏 11-18 395 1,软件第一次运行时,该方法会反馈true,无论是否选择了不再询问。

2,之后,当用户没有选择不再询问,该方法会返回false。

3,之后,当用户选择了不再询问,该方法会返回true。

所以逻辑需要变成: 初始化:第一次运行=true if(不是第一次运行&&!shouldShowRequestPermissionRationale(任意一个请求的权限)){ //用户选择了不再弹出,使用其他方法提醒用户到什么地方去设置 //TODO return; 权限申请shouldShowRequestPermissionRationale的正确用法 最新发布 qq_31031769的博客 07-30 563 shouldShowRequestPermissionRationale只有在拒绝了第一次后才会返回ture。

android权限should,Android6.0动态权限shouldShowRequestPermissionRationale的含义 weixin_30986517的博客 06-03 226 一个老生常谈的问题,关于Android6.0及以后版本对动态权限的处理方法。

这里主要说说在处理动态权限时一个重要的方法ActivityCompat.shouldShowRequestPermissionRationale(context,permission),相信大部分人都不陌生,但他具体什么意思可能有部分人又很模糊,今天用示例演示下这个方法的含义。

APP调用一个需要权限的函数时,如果用户拒绝... Android位置权限拒绝多次后,AndroidM中权限被拒绝时该如何处理 weixin_39633437的博客 05-27 891 M的开发者预览版2现在包含了一个运行时权限的新方法:Activity.shouldShowRequestPermissionRationale()。

它告诉你的app在实际显示权限对话框之前是否显示一个对正在请求权限的解释。

在app第一次安装的时候。

这个方法会返回false,因此你可以直接请求任何需要的权限。

如果用户以前拒绝了一个请求,这个方法将返回true。

那样的话你应该考虑在再次触发权限对话框之... android权限判断时shouldShowRequestPermissionRationale的使用 dashen的博客 11-23 578 shouldShowRequestPermissionRationale用于处理用户勾选下次不再询问的权限情况: 如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了Don’taskagain选项,此方法将返回false。

如果设备规范禁止应用具有该权限,此方法也会返回false 操作 结果 第一次打开App时 false 勾选“下次不在询问” true ... Android动态权限申请之shouldShowRequestPermissionRationale方法异常 殇神马的博客 12-20 2522     **我们知道从Android6.0(API23)开始,Google在Android上引入了动态权限模式,即用户可在应用运行时管理权限, 这种模式让用户能够更好地了解和控制权限,用户可为所安装的各个应用分别授予或撤销权限。

但是对于开发者来说,为了适配Android6.0(API23)及以上版本,除了在Andr android在权限判断时shouldShowRequestPermissionRationale的使用 淘特 03-07 8589 为了帮助查找用户可能需要解释的情形,Android提供了一个实用程序方法,即shouldShowRequestPermissionRationale()。

如果应用之前请求过此权限但用户拒绝了请求,此方法将返回true。

注:如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了Don’taskagain选项,此方法将返回false。

如果设备规范禁止应用具有该权限,此方法也会返回... shouldShowRequestPermissionRationale 风吹柳花满店香,吴姬压酒劝客尝 04-02 219 shouldShowRequestPermissionRationale,回到最初的解释“应不应该解释下请求这个权限的目的”。

1.都没有请求过这个权限,用户不一定会拒绝你,所以你不用解释,故返回false; 2.请求了但是被拒绝了,此时返回true,意思是你该向用户好好解释下了; 3.请求权限被禁止了,也不给你弹窗提醒了,所以你也不用解释了,故返回fasle; 4.请求被允许了,都给你权... 关于权限的使用shouldShowRequestPermissionRationale 一站到底s的博客 11-06 483 这篇文章写得挺细的。

https://www.jianshu.com/p/891207f69ebe https://blog.csdn.net/yushuangping/article/details/83758957下面内容出自左边的这篇文章。

shouldShowRequestPermissionRationale(): 当应用首次申请权限时,如果用户点击拒绝,下次再申请权限,An... android6.0权限问题处理的核心代码--shouldShowRequestPermissionRationale正确用法 热门推荐 u011266694的专栏 08-26 1万+ privatevoidrequestPermission(String[]permissions){ booleanisMinSdkM=Build.VERSION.SDK_INTM; if(isMinSdkM||permissions.length==0){ PermissionHelper.getInstance().onAllPerm android权限should,Android6.0权限获取方式-shouldShowRequestPermissionRationale weixin_33322743的博客 06-03 156 现在要在android上获取权限必须得动态申请,直接在manifest申请是无效的,动态申请后的权限,就不用再次申请了。

但是在android开发中用华为真机测试的时候,发现一个比较奇葩的问题,下面这一句代码原本的作用是:ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.RECORD_AUD... Android动态申请权限的方法和shouldShowRequestPermissionRationale方法的含义 qq_36523667的博客 12-27 7570   if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) !=PackageManager.PERMISSION_GRANTED){ requestPermissions(newString[]{Manifest.permission.READ_EXTERNAL_STORAGE},0... “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 ©️2022CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页 Z_yq CSDN认证博客专家 CSDN认证企业博客 码龄11年 暂无认证 22 原创 15万+ 周排名 8万+ 总排名 8万+ 访问 等级 979 积分 13 粉丝 42 获赞 25 评论 72 收藏 私信 关注 热门文章 反编译apk文件查看源码,反编译apk获取资源 10229 Android中使用shouldShowRequestPermissionRationale判断权限被禁止 10076 android开发百度地图黑屏闪退现象解决办法 9232 Android的原生APP如何调试嵌入的H5页面 8162 eclispe问题:Anerrorhasoccurred.Seeerrorlogformoredetails.Graphicisdisposed。

7943 分类专栏 工具 4篇 开发利器 5篇 View事件触发 1篇 安卓开发技术 23篇 最新评论 run/debugapp时报错:INSTALL_PARSE_FAILED_NO_CERTIFICATES Abro.: thanks! Android开发:UncaughtExceptionHandler捕获全局异常 未来之窗软件服务: 收藏 EasyPermission:一句代码解决动态权限的申请和回执(带权限提示信息) Z_yq: 已经更新了2.0.13版本: 增加EasyTopAlertStyle,支持自定义顶部提示信息样式; EasyAppSettingDialogStyle,说明弹窗支持自定义的文本颜色、大小、按钮文本和主题颜色等; 更新日志: https://gitee.com/zhang-yanqiang/easypermission/releases 解决使用正则时报异常:Incorrectlynestedparenthesesinregexppatternnearindex... liuzhenlee: 赞一个! 使用nexus搭建局域网私服Maven仓库(Windows版) 绚丽星空: 进入到nexus的bin目录“nexus/start”执行会出现“Couldnotstartservice.Errorcode:1060”,这是因为nexus版本造成的启动命令不一样,改为“nexus/run”就可以正常启动了 您愿意向朋友推荐“博客详情页”吗? 强烈不推荐 不推荐 一般般 推荐 强烈推荐 提交 最新文章 使用TextPaint实现自由加粗字体:BoldTextView,支持中粗 EasyPermission:一句代码解决动态权限的申请和回执(带权限提示信息) 【targetSdk升级适配记录】androidX/AndroidP/AndroidQ/AndroidR/AndroidS 2022年5篇 2021年3篇 2020年4篇 2019年7篇 2018年4篇 2017年1篇 2016年1篇 2015年1篇 目录 目录 分类专栏 工具 4篇 开发利器 5篇 View事件触发 1篇 安卓开发技术 23篇 目录 评论 1 被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 打赏作者 Z_yq 你的鼓励将是我创作的最大动力 ¥2 ¥4 ¥6 ¥10 ¥20 输入1-500的整数 余额支付 (余额:--) 扫码支付 扫码支付:¥2 获取中 扫码支付 您的余额不足,请更换扫码支付或充值 打赏作者 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。

2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值


請為這篇文章評分?