Android6.0权限适配

关于Android6.0权限的一些知识在上一篇博客中已经提过了,这里就不多说了。

开始

权限的适配主要就是两步,一是请求权限,二是系统应答,我们主要在这两个地方进行封装。我们把这两步操作封装在XPermissionActivity中。

1.定义PermissionHandler用于权限回调

onGranted 当用户同意时调用

onDeied 当用户拒绝时调用

onNeverAsk 当用户选择拒绝,并勾选不再提示时调用,这里可以向用户展示如何在系统设置里打开权限的流程,不然用户一旦勾选了都不知道去哪里开启。

2.请求权限

PermissionUtils是PermissionsDispatcher中使用的工具类,主要是一些权限检查的方法。

首先判断是否拥有权限,有的话直接回调PermissionHandler的onGranted,没有的话则持有PermissionHandler对象,发起权限请求。这里把PermissionHandler放在成员变量而不是用一个Map来缓存,主要是因为正常情况下是不会并发请求权限的,而且要申请多个权限的话是可以批量申请的,所以这里简单处理。

3.权限结果处理

这里的处理主要参考PermissionsDispatcher生成的代码,逻辑也很简单。首先判断了对TargetSDK小于23的再次检查权限,接着判断权限返回结果是否成功。 这里需要注意的是,当用户拒绝权限并勾选了不再提示时,PermissionUtils.shouldShowRequestPermissionRationale返回false,这里默认处理弹出一个toast提示用户到设置-应用-权限中打开。

4.调用

调用的方式和以前一样,继承XPerssionActivity,调用requestPermission这里传入需要请求的权限数组。

反馈

上一篇博客中,不少朋友关于[基础权限]有一些争议,因为之前说到"不给基础权限就不让使用"。我这里所说的基础权限是相对于App而言的,比如: 微信的基础权限是[位置]和[电话状态],在启动微信的时候会看到这两个权限的授权,只要任一一个不通过就无法进入微信,这样的处理是比较合理的,如果要在代码中去适配这两个权限的话,估计要改动的地方非常大。

目前主流App的处理方式是在获取权限之前给用户一个友好的提示:

GitHub地址 https://github.com/a5533348/XPermission

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值