permission

api23以及以上的 版本中,对于一些系统认为非常规的权限,需要用户动态的授权。
在老版本中,用户授权是在第一次安装app的时候,如果用户拒绝了某个用户权限,app会安装失败。新版本中,用户获得权限是在app需要用到该权限的时候,去动态的获取权限。
权限申请管理类

ActivityCompat 和ContextCompat
  1. 检查当前app有没有某项权限checkSelfPermission
    exampleActivityCompat.checkSelfPermission(MediaAuido.this,Manifest.permission.READ_EXTERNAL_STORAGE) 判断有没有读取内存的权限。
  2. 申请权限requestPermissions() 注意,如果用户拒绝了一次之后,下次再次调用这个方法的时候,系统并不会弹出提示框,并且,这个权限框与当前活动线程是异步关系,(个人猜测权限提示框在一个系统线程里面)
    exampleActivityCompat.requestPermissions(MediaAuido.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 2); 后面的数字requestCode,用于用户操作的回调
  3. 关于回调 暂时还没用到,
  4. 提示用户为什么需要该权限,shouldShowRequestPermissionRationale 当申请权限的时候,提示用户为什么需要当前权限,目前还没用到
  5. 用户回调监听,``目前未用到
  6. ps:检查当前的sdk版本 Build.VERSION.SDK_INT >= 23判断当前版本是不是大于23

ActivityCompat与ContextCompat的关系,

对于权限,MEDIA_CONTENT_CONTROLMODIFY_AUDIO_SETTINGS在代码中请求他们的权限的时候,并不会弹出授权菜单,并且检查有没有这两个权限的时候,一直提示-1,也就是没有权限.没有权限,又不弹出权限授权菜单,和奇怪。

你可能感兴趣的:(permission)