我需要从服务中绘制系统覆盖视图。这是将此视图添加到WindowManager的部分:
WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
失败并被许可拒绝例外:
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@f15e8de -- permission denied for window type 2038
我已尝试过我在网上找到的所有内容,但仍然无法通过此权限。
Settings.canDrawOverlays
,这是真的。Draw over other apps
权限。我查看了Android: permission denied for window type 2038 using TYPE_APPLICATION_OVERLAY中的所有答案,但没有一个能解决我的问题。
任何帮助表示赞赏!谢谢!
答案 0 :(得分:1)
您应为Android N选择其他类型:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
flags = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
flags = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
flags,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);