特殊权限(Special Permissions)兼容库,悬浮窗权限(SYSTEM_ALERT_WINDOW)与系统设置修改权限(WRITE_SETTINGS)
Android 6.0 以前只要在 manifest 中申请了权限就是默认开启的
Android 6.0+需要在 manifest 中申请并且通过发送 Intent 让用户在设置界面进行勾选
适配
检测
API 23+(Android 6.0+/M) 使用 Settings.canDrawOverlays, Settings.System.canWrite
API 18+(Android 4.3+/JellyBean MR2) 通过反射使用 AppOpsManager.checkOp
API < 18 默认权限开启,时始终返回 true
授权
API 23+(Android 6.0+/M) 去系统设置面板就好 new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION), new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
API 18+(Android 4.3+/JellyBean MR2) 默认权限开启
API < 18 默认权限开启,不做任何处理
切换授权状态
AppOpsManager.setMode 可用于Android 4.3/4.4修改授权状态
API 18 添加 AppOpsManager(被隐藏,在 Android 4.4 公开)
API 21 后需要签名验证的权限android.Manifest.permission.UPDATE_APP_OPS_STATS,第三方应用用不了了。
ROM