在Android 6.0(API级别23)及以上版本,为了保证用户隐私和安全,如果应用想要创建TYPE_APPLICATION_OVERLAY
类型的窗口,必须动态请求SYSTEM_ALERT_WINDOW
权限。这个权限允许应用显示在其他应用上面,如果不授权,应用将无法创建或显示悬浮窗口。
申请该权限的示例代码如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
} else {
// 已经有权限,可以创建 TYPE_APPLICATION_OVERLAY 类型的窗口
}
}
当用户同意授权后,应用才能成功创建并显示TYPE_APPLICATION_OVERLAY
类型的窗口,从而实现在任何界面(包括锁屏界面)上显示悬浮窗口的效果。