欢迎光临
专注android技术,聚焦行业精粹,我们一直在努力

android 6.0运行时权限的完整接入流程

1、封装成工具库的必要性

  • 权限申请状态判断逻辑复用:
    这些权限在和用户交互过程中可能全部授予、部分授予或全部拒绝
  • Rational 对话框时机管理: 如果应用之前请求过此权限但用户拒绝了请求,
    shouldShowRequestPermissionRationale 方法将返回 true,此时建议提醒用户我们为什么需要此权限。
  • 不同手机、不同系统版本兼容:例如小米手机有自己的权限管理,所以在权限判断部分会有不同。

2、runtime permission 接入流程封装

android 6.0 如何接入参考这篇文章:《Android 6.0 在运行时请求权限》,以下介绍以下6.0权限接入流程:

  1. App调用方需要在需要申请权限的逻辑前调用Facade申请关联的权限
  2. (filter permissions)Facade从系统查询申请的权限列表中哪些已授权,哪些是拒绝的待授权。当sdk-ver >=23 && target-sdk-ver >= 23时使用ActivityCompat.checkSelfPermission;当sdk-ver >=23 && target-sdk-ver < 23时使用PermissionChecker.checkSelfPermission;其它条件都认为是已授权
  3. Facade会对sdk-ver(手机操作系统版本)和 target-sdk-ver (App的targetsdkversion)做不同流程处理:当sdk-ver >=23 && target-sdk-ver >= 23时,需要对拒绝的权限主动申请,反之是不需要向系统申请权限的
  4. 如果需要像系统申请权限,需要根据shouldShowRequestPermissionRationale 为true时向用户弹窗提示申请权限的理由。该弹窗的确认按钮的操作应该是继续申请权限
  5. 最终将权限的申请结果返回给调用方来决定是否继续此前的操作

3、 GitHub  开源权限框架分析 —PermissionsDispatcher 

PermissionsDispatcher的框架是就是上面的流程设计的,但是他的绿色部分(App调用方)使用annotationProcessor来处理的。一个很明显的效果是接入代码只需要在相应的注解下面写业务代码即可,让代码逻辑变的更简单。

该框架的github地址:https://github.com/permissions-dispatcher/PermissionsDispatcher

java 注解处理:https://www.race604.com/annotation-processing/

 

4、一个简单的工具方法,封装动态权限申请操作

对于第二节工具层的简单的封装示例如下(不包括其中的Rationale对话框逻辑)

 

赞(1) 打赏
未经允许不得转载:花花鞋 » android 6.0运行时权限的完整接入流程
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

国内精品Android技术社区

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏