Estoy desarrollando un aplicación para fondo de videorecording ,es por eso que he utilizado administrador de ventanas,pero no funcionó para mí.da los siguientes errores:

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.[email protected] -- 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.NativeStart.main(Native Method)
08-23 15:38:21.021: E/AndroidRuntime(4200): Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.[email protected] -- 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

Mi administrador de ventanas de código:

windowManager = (WindowManager) this.getSystemService(BackgroundVideoRecorder.WINDOW_SERVICE);
surfaceView = new SurfaceView(this);
LayoutParams layoutParams = new WindowManager.LayoutParams(
1, 1,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT
);
//layoutParams.gravity = Gravity.LEFT | Gravity.TOP;
windowManager.addView(surfaceView, layoutParams);
surfaceView.getHolder().addCallback(this);

Por favor me ayude.Gracias de antemano.

OriginalEl autor Vasu | 2013-08-23

3 Comentarios

  1. 22
    08-23 15:38:21.021: E/AndroidRuntime(4200): Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.[email protected]418c0b68 -- permission denied for this window type

    Problema:
    Permiso falta en maifest archivo.

    Solución:
    Utilice el siguiente permiso en AndroidManifest.

    android.permission.SYSTEM_ALERT_WINDOW
    sí,la he usado en mi mainifest todavía tengo error
    podría plz pegar el manifiesto?
    una actividad,un servicio & permisos siguientes <uses-permission android:name=»android.el permiso.RECORD_AUDIO» /> <uses-permission android:name=»android.el permiso.CÁMARA» /> <uses-permission android:name=»android.el permiso.WRITE_EXTERNAL_STORAGE» /> <usa-característica de android:name=»android.de hardware.cámara»/> <uses-permission android:name=»SYSTEM_ALERT_WINDOW»></uses-permission>
    no trabajo para malvavisco, ¿qué debemos hacer !?
    tal vez agregar permisos durante el tiempo de ejecución? stackoverflow.com/questions/7569937/…

    OriginalEl autor Ritesh Gune

  2. 10

    si su aplicación apiLevel >= 19, no uso

    Administrador de ventanas.LayoutParams.TYPE_PHONE o administrador de ventanas.LayoutParams.TYPE_SYSTEM_ALERT

    puede utilizar

    LayoutParams.TYPE_TOAST

    o

    TYPE_APPLICATION_PANEL

    ahora mi código para LayoutParams es como,

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.TYPE_TOAST,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSLUCENT);
    para Lollipop y menor solía administrador de ventanas.LayoutParams.TYPE_PHONE, pero no funcionó para Android M, entonces usé el administrador de ventanas.LayoutParams.TYPE_TOAST como usted sugiere, y ahora ya funciona, gracias!
    Sí, TYPE_TOAST funciona cuando no se utiliza para dibujar en el lockscreen
    Tengo que usar android.permission.SYSTEM_ALERT_WINDOW ?
    t0m: si utiliza el TYPE_TOAST, sin el permiso necesario
    LayoutParams.TYPE_TOAST está en desuso a partir de la API de 26. Uso LayoutParams.TYPE_APPLICATION_OVERLAY lugar y se requiere android.Manifest.permission#SYSTEM_ALERT_WINDOW permiso => Ver más

    OriginalEl autor varotariya vajsi

Dejar respuesta

Please enter your comment!
Please enter your name here