修改日期 | 修改人 | 备注 |
2017-07-03 08:52:17[当前版本] | 裴俊绍 | 格式调整 |
2017-07-03 08:47:34 | 裴俊绍 | 样式调整 |
2017-06-23 17:41:43 | 裴俊绍 | 加了点注释 |
2017-06-23 14:57:04 | 裴俊绍 | 调整顺序 |
android6.0开始,权限的申请发生了改变,申请变的动态化,也就是运行时权限,和iOS相仿,动态化的意思是指,在每次使用需要危险权限的方法的时候,需要检查程序是否获得了该权限的许可。动态化的权限申请能够让用户更加清晰的知道程序需要什么权限,以及程序中哪些地方的操作需要涉及用户安全。不再是仅仅在程序安装的时候,一次性把所需要的普通的、危险级别的权限一次性列出来,然后展示给用户。
当工程项目的target Sdk为23时,由于考虑到用户如果没有进行权限的动态检查,那么在运行到需要权限的代码时,会发生crash,而当你的target Sdk为23以下时,则不强制要求权限的动态监测,此时app不会crash,还是可以正常的使用功能。
Google官网上动态申请权限的方法分了在Activity和Fragment这两种,通过ContextCompat以及子类,ActivityCompat和FragmentCompat去进行权限的申请和权限的检查,而申请的方式是弹出一个系统的不可以改写的对话框,结果是通过Activity和Fragment的onRequestPermissionResult()方法进行返回。
具体可以参考官网
但是这种代码会促使以前的工程进行大改造或者说代码的逻辑会耦合的写在同一个方法里,显的不方便和臃肿。所以以下的EasyPermissionUtil就是简化权限请求的方式,同时可以使代码的逻辑更加清晰。
由于权限的请求和结果的返回需要分开Activity和Fragment两种去进行操作,这样会比较麻烦,所以EasyPermissionUtil中投机取巧,通过开启一个新的activity进行权限申请和检查的操作,这样不用去区分多种情况,同时也能够把所有的申请过程和结果统一由EasyPermissionUtil进行处理。
接下来看一下整体的思想: