转载请标注
 
  Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限. 时代总是不断发展, 程序总是以人为本, 让我们为应用添加动态权限管理吧! 这里提供了一个非常不错的解决方案, 提供源码, 项目可以直接使用.
 
   
  Android系统包含默认的授权提示框, 但是我们仍需要设置自己的页面. 原因是系统提供的授权框, 会有不再提示的选项. 如果用户选择, 则无法触发授权提示. 使用自定义的提示页面, 可以给予用户手动修改授权的指导.
 
  本文示例的GitHub下载地址
 
  在Api 23中, 权限需要动态获取, 核心权限必须满足. 标准流程:
 
   
  如果用户点击, 不再提示, 则系统授权弹窗将不会弹出. 流程变为:
 
   
  流程就这些, 让我们看看代码吧.
 
  
 
  1. 权限
 
  在AndroidManifest中, 添加两个权限, 录音和修改音量.
 
      
 
   
   危险权限必须要授权, 一般权限不需要.
 
  
 
  检测权限类
 
  
 
  
 
  2. 首页
 
  假设首页需要使用权限, 在页面显示前, 即onResume时, 检测权限,
如果缺少, 则进入权限获取页面; 接收返回值, 拒绝权限时, 直接关闭.
 
  public class MainActivity extends AppCompatActivity { private static final int REQUEST_CODE = 0; 
 
   
   核心权限必须满足, 如摄像应用, 摄像头权限就是必须的, 如果用户不予授权, 则直接关闭.
 
  
 
  
 
  3. 授权页
 
  授权页, 首先使用系统默认的授权页, 当用户拒绝时, 指导用户手动设置, 当用户再次操作失败后, 返回继续提示. 用户手动退出授权页时, 给使用页发送授权失败的通知.
 
  
 
   
   注意isRequireCheck参数的使用, 防止和系统提示框重叠.
系统授权提示: ActivityCompat.requestPermissions, ActivityCompat兼容低版本.
 
  
 
  效果
 
   
  
 
  关键部分就这些了, 动态权限授权虽然给程序员带来了一些麻烦, 但是对用户还是很有必要的, 我们也应该欢迎, 毕竟每个程序员都是半个产品经理.
 
  危险权限列表
 
  