热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android运行时机制问题解决方案

概述在Android6.0之前,用户申请的权限默认是全部同意的,有时候一个应用安装可能会申请很多不必要权限,这样无疑会让个人隐私变得容易泄

概述



在Android6.0之前,用户申请的权限默认是全部同意的,有时候一个应用安装可能会申请很多不必要权限,这样无疑会让个人隐私变得容易泄露。在Android6.0之后,应用许可提示可以自己定义了,权限机制分为普通权限和危险权限,对于普通权限在清单中注册直接会同意,而对于危险权限需要用户在代码中手动申请,然后在回调中处理同意和不同意的结果。关于运行时权限的使用可以看这里,讲得还是很清楚的。

虽然在Android6.0时候增加了运行时权限机制对于用户来说是一个福音,但是对于开发者来说显然是一个噩梦,因为我们每次调用关于需要权限的api,都需要在这些方法前面加权限检查,否则你的app就会crash,这显然不是我们想要看到的,如果用原生的api就会处理每个页面的回调,有时候权限少的话可能还好,但是多了的话,就需要处理很多回调,这无疑会增加开发者的负担。

针对这种情况,于是总结了以下几种解决方案。


Android6.0之前版本的应对方案



Android6.0系统默认为targetSdkVersion小于23的应用授予了所申请的所有权限,所以如果你以前的App设置的targetSdkVersion小于23,在运行时也不会崩溃,于是可以将你app的targetSdkVersion设置低于23就不会奔溃,也不用提前检查权限。


Android6.0之后版本的应对方案



为了解决申请权限的回调地狱,于是出现了很多基于运行时权限的框架,它们可以简化整个申请权限的过程,变化的只是传进来的参数,而不用再去处理回调地狱,接下来就介绍下几种框架在运行时权限中的应用。


1.)PermissionsDispatcher 详细用法可以看github
2 .) RxPermission 它其实是结合RxJava来实现的,同时加了一个隐藏的fragment,将fragment和activity绑定,于是在fragment中去申请权限,从而简化在activity中的使用
3.) easypermissions



处理’不再询问’ 选项



如果用户选择了’不再询问’,那么每次我们需要访问该权限的API时都会失效,这显然不会带来好的用户体验,所以此时需要做的就是给用户一个友好的提示,这时候就需要使用ActivityCompat.shouldShowRequestPermissionRationale方法,这个方法用来帮助开发者向用户解释权限的情况。如果用户选择了’不再询问’选项,则shouldShowRequestPermissionRationale方法会返回false,这时候我们就可以弹出AlertDialog来提醒用户允许访问该权限的重要性。


参考



1.Android 6.0 运行时权限处理完全解析

2.目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的使用和对比

3 . Android进阶之光


推荐阅读
author-avatar
终结者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有