android 悬浮窗的权限问题 permission denied for window type 2007

it2025-05-24  11

permission 问题

记录一个错误

场景

自定义了一个悬浮窗,在服务中启动了悬浮窗,错误内容如下。

Unable to create service com.example.xhj.RocketService: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@6d959e1 -- permission denied for window type 2007
出现问题的代码
mWM.addView(mLayout, mParams);

经过搜索资料,发现是这一行代码的问题

mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
原因

在使用android.permission.SYSTEM_ALERT_WINDOW 权限的应用无法再使用以下窗口类型来在其他应用和系统窗口上显示悬浮窗

WindowManager.LayoutParams.TYPE_PRIORITY_PHONE WindowManager.LayoutParams.TYPE_PHONE WindowManager.LayoutParams.TYPE_SYSTEM_ERROR WindowManager.LayoutParams.TYPE_SYSTEM_ALERT WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY

增加了WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,使用它可以显示在其他或系统应用上层,当我把type改成这个值时又出现了错误

Unable to add window android.view.ViewRootImpl$W@6d959e1 -- permission denied for window type 2038

这个错误是因为本应用程序中的设置选项没有开启在其他应用上层显示的开关。开启就可以成功运行了。也正在琢磨开启的方式。

最新回复(0)