Android 6.0分水岭
Android 6.0 (API 23) 开始,危险级别权限(涉及用户隐私数据)仅在执行相应的逻辑操作时才通知请求用户授权。
targetSdkVersion < 23 时,App在安装时获取所有权限,但在6.0系统中用户可手动设置app权限许可。
targetSdkVersion >= 23 时,App依然需要声明所需的所有权限,但在6.0系统中,App安装时仅自动授权普通权限,危险权限需要在所需权限的逻辑执行前向用户申请授权。
参考:系统权限指导
申请授权
通过PermissionChecker
或ContextCompat.checkSelfPermission
方法查询某个权限授权状态,配合ActivityCompat.requestPermissions、shouldShowRequestPermissionRationale
方法请求授权和判断是否需要向用户解释权限用途。覆盖Activity.onRequestPermissionsResult
方法接收权限申请结果。
也可使用第三方库 PermissionsDispatcher,以注解方式自动、快速执行权限申请逻辑。
权限名称字符串可从Manifest.permission
对象中提取。