Невозможно добавить окно - разрешение отклонено для типа окна 2003

Я столкнулся с проблемой при попытке добавить содержимое в WindowManager. Что самое интересное, если скомпилировать через другой компилятор (AIDE), то все работает нормально. Сейчас я использую студию Android. Вот код ниже:

params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);

        params.gravity = Gravity.TOP|Gravity.LEFT;
        params.x = 0;
        params.y = y - barHeight;

        windowManager.addView(nb, params); // error there

AndroidМанифест:

<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />

Сообщение об ошибке:

java.lang.RuntimeException: Unable to create service priv.congard.ozonehd4k.controlpanel.NavigationBarService: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@a8744a7 -- permission denied for window type 2003
                                                                                         at android.app.ActivityThread.handleCreateService(ActivityThread.java:3226)
                                                                                         at android.app.ActivityThread.-wrap5(ActivityThread.java)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1586)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                         at android.os.Looper.loop(Looper.java:154)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:6186)
                                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
                                                                                      Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@a8744a7 -- permission denied for window type 2003
                                                                                         at android.view.ViewRootImpl.setView(ViewRootImpl.java:703)
                                                                                         at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
                                                                                         at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
                                                                                         at priv.congard.ozonehd4k.controlpanel.NavigationBarService.onCreate(NavigationBarService.java:64)

В отличие от другого вопроса, в моем случае окно создается не на экране блокировки. С чем может быть связана эта странная проблема?


person congard    schedule 05.02.2018    source источник
comment
Это не дубликат. Это происходит без экрана блокировки, и у меня есть разрешение на всплывающее окно. Почему вы помечаете как дубликат и не ссылаетесь на дубликаты, мне не понятно   -  person Brian Reinhold    schedule 20.06.2018
comment
У меня была такая же проблема. Я решил это, установив флаг оконного менеджера TYPE_APPLICATION_OVERLAY для SDK›=26 и TYPE_SYSTEM_OVERLAY для SDK‹26.   -  person Ziad Halabi    schedule 26.10.2018