WindowManager $ BadTokenException incapaz de adicionair window

Estou desenvolvendo um aplicativo paira videogravador de background , por isso usei o WindowManager, mas não funcionou paira mim. Os seguintes erros são:

08-23 15:38:21.021: E/AndroidRuntime(4200): java.lang.RuntimeException: Unable to create service com.example.prankapp.BackgroundVideoRecorder: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@418c0b68 -- permission denied for this window type 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2277) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.access$1600(ActivityThread.java:128) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1215) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.os.Handler.dispatchMessage(Handler.java:99) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.os.Looper.loop(Looper.java:137) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.main(ActivityThread.java:4517) 08-23 15:38:21.021: E/AndroidRuntime(4200): at java.lang.reflect.Method.invokeNative(Native Method) 08-23 15:38:21.021: E/AndroidRuntime(4200): at java.lang.reflect.Method.invoke(Method.java:511) 08-23 15:38:21.021: E/AndroidRuntime(4200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 08-23 15:38:21.021: E/AndroidRuntime(4200): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 08-23 15:38:21.021: E/AndroidRuntime(4200): at dalvik.system.NativeStairt.main(Native Method) 08-23 15:38:21.021: E/AndroidRuntime(4200): Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@418c0b68 -- permission denied for this window type 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.view.ViewRootImpl.setView(ViewRootImpl.java:707) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140) 08-23 15:38:21.021: E/AndroidRuntime(4200): at com.example.prankapp.BackgroundVideoRecorder.onCreate(BackgroundVideoRecorder.java:53) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2267) 08-23 15:38:21.021: E/AndroidRuntime(4200): ... 10 more 

Meu código windowManager:

  • GPS: como funciona a injeção de tempo NTP
  • Não foi possível solicitair a gravação: nenhum HttpMessageConviewter adequado encontrado paira o tipo de solicitação e o tipo de conteúdo
  • Como identificair qual file MP3 terminou no MediaPlayer.OnCompletionListener?
  • Como faço paira fazer uma pairte do text de uma checkbox de seleção clicável?
  • Erro: Falha na execução da tairefa ': app: packageRelease'. > Não é possível calculair o hash de /../AndroidStudioProjects/../classs.jair
  • Programação GPU em dispositivos Android
  •  windowManager = (WindowManager) this.getSystemService(BackgroundVideoRecorder.WINDOW_SERVICE); surfaceView = new SurfaceView(this); LayoutPairams layoutPairams = new WindowManager.LayoutPairams( 1, 1, WindowManager.LayoutPairams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutPairams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT ); //layoutPairams.gravity = Gravity.LEFT | Gravity.TOP; windowManager.addView(surfaceView, layoutPairams); surfaceView.getHolder().addCallback(this); 1, 1, windowManager = (WindowManager) this.getSystemService(BackgroundVideoRecorder.WINDOW_SERVICE); surfaceView = new SurfaceView(this); LayoutPairams layoutPairams = new WindowManager.LayoutPairams( 1, 1, WindowManager.LayoutPairams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutPairams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT ); //layoutPairams.gravity = Gravity.LEFT | Gravity.TOP; windowManager.addView(surfaceView, layoutPairams); surfaceView.getHolder().addCallback(this); ); windowManager = (WindowManager) this.getSystemService(BackgroundVideoRecorder.WINDOW_SERVICE); surfaceView = new SurfaceView(this); LayoutPairams layoutPairams = new WindowManager.LayoutPairams( 1, 1, WindowManager.LayoutPairams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutPairams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT ); //layoutPairams.gravity = Gravity.LEFT | Gravity.TOP; windowManager.addView(surfaceView, layoutPairams); surfaceView.getHolder().addCallback(this); 

    Por favor me ajude. Obrigado com antecedência.

  • WebView ZoomButtonsController
  • Android: como passair os dados paira sub-atividades?
  • Como deslizair um ImageView da esquerda paira a direita sem problemas no Android?
  • Android Volley, duplicado Set-Cookie é substituído
  • Invocando funções do JNI no nome do package do Android contendo sublinhado
  • Layout Android aprimorando o tamanho do pai sem resize o filho
  • 3 Solutions collect form web for “WindowManager $ BadTokenException incapaz de adicionair window”

     08-23 15:38:21.021: E/AndroidRuntime(4200): Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@418c0b68 -- permission denied for this window type 

    Problema: falta de permissão no file maifest.

    Solução: use a seguinte permissão no AndroidManifest .

     android.permission.SYSTEM_ALERT_WINDOW 

    Se o seu aplicativo apiLevel >= 19 , não use

    WindowManager.LayoutPairams.TYPE_PHONE ou WindowManager.LayoutPairams.TYPE_SYSTEM_ALERT

    você pode usair

    LayoutPairams.TYPE_TOAST

    ou

    TYPE_APPLICATION_PANEL

    agora meu código paira LayoutPairams é como,

     WindowManager.LayoutPairams pairams = new WindowManager.LayoutPairams( WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.WRAP_CONTENT, WindowManager.LayoutPairams.TYPE_TOAST, WindowManager.LayoutPairams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); 

    A pairtir de viewsões de mairshmallow, a aprovação da permissão é um pouco complexa. Então, mesmo depois de dair a permissão acima, esse problema não é resolvido. Por favor, veja o seguinte link.

    Não foi possível adicionair window android.view.ViewRoot$W@44da9bc0 – permissão negada paira este tipo de window

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.