Android开发之权限申请以及拒绝后的控制解析
白羽 2018-06-05 来源 :网络 阅读 921 评论 0

摘要:android 6.0权限申请以及拒绝后的控制解析,Android 6.0后官方对权限做了更改,一些涉及到用户隐私的权限必须要用户手动允许;而对于某些app来说,某个权限一旦被用户拒绝,则面临的是整个app的瘫痪,所以,我们要在合适的位置对出现的异常情况进行特殊操作,希望本文对大家学Android有所帮助。



android 6.0权限申请以及拒绝后的控制解析,Android 6.0后官方对权限做了更改,一些涉及到用户隐私的权限必须要用户手动允许;而对于某些app来说,某个权限一旦被用户拒绝,则面临的是整个app的瘫痪,所以,我们要在合适的位置对出现的异常情况进行特殊操作:
首先调用权限的方法:


ActivityCompat.requestPermissions(final @NonNull     Activity activity,final @NonNull String[] permissions, final @IntRange(from = 0) int requestCode)

   

此方法的三个参数:①为调用权限的当前activity
②权限数组,所有的权限都可以整合到这里
③请求码,用来判断是此次请求操作,后面可以用到

此方法已经判断了sdk>=23的情况,所以我们无需再次判断。
另外有时候我们在需要某个权限的时候,不知道是否已经申请过,这时候我们就需要检查一下,这里检查权限的代码为:


   
ActivityCompat.checkSelfPermission(@NonNull Context context, @NonNull String permission)

   

其中①context为当前上下文对象
②permission为需要检查的权限为字符串类型
此方法返回值为int 型,如果==0,则代表已经拥有过权限;如果==-1,则代表还未申请此权限,此方法在任何时间都可以判断。

再一个就是权限申请都是以弹窗的形式让用户选择允许还是拒绝;不管用户是选择哪一项,在点击完成(如果同时申请多个权限,则需要所有权限全部点击完)后,必会触发下面这个回调方法:

   
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
            @NonNull int[] grantResults)

   

这个方法是FragmentActivity实现ActivityCompat.OnRequestPermissionsResultCallback后的回调方法,用户在activity中只要重写这个方法就可以了;
这个方法中有三个参数:①代表上面申请权限时提供的请求码
②是此次申请的所有权限的数组,数组中元素顺序按照申请时的顺序排列;
③返回的允许还是拒绝的结果码,以int数组的方式一一对应于②参数的权限,其中每个元素只有两种值:0和-1,0即是代表已经允许,-1则代表用户主动拒绝;
通过这个方法我们就可以根据用户的回应选择不同的处理方式,比如如果某个权限用户必须允许,我们则可以在用户拒绝后强制弹出一个不可取消的dialog,引导用户进入权限设置页面进行设置,用户进入权限页面的代码如下:


   

Intent intent = new Intent();  intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

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

intent.setData(uri);

startActivity(intent);

   


 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程