3 votes

WebView Video FullScreen Mode Crash dans certains appareils Android lors de l'utilisation du contexte de l'application

Comme nous le savons tous, Webview peut provoquer des fuites de mémoire dans certains cas. J'utilise donc le contexte de l'application pour construire la webview comme suit new WebView(getApplicationContext()) .

J'ai besoin de rendre la vidéo en plein écran, donc je passe outre WebChromeClient#onShowCustomView() Après avoir testé quelques appareils, l'un d'entre eux se plante à chaque fois que l'on appuie sur l'icône plein écran.

Voici la trace :

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:697)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:345)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
    at android.view.Window$LocalWindowManager.addView(Window.java:554)
    at android.widget.MediaController.show(MediaController.java:338)
    at android.webkit.HTML5VideoFullScreen.showControllerInFullScreen(HTML5VideoFullScreen.java:387)
    at android.webkit.HTML5VideoViewProxy$VideoPlayer.end(HTML5VideoViewProxy.java:310)
    at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:450)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4898)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
    at dalvik.system.NativeStart.main(Native Method)`

Cela fonctionne bien lorsque j'ai utilisé l'activité pour construire le webview.

Alors quelle est la différence avec ces appareils Android ?
Est-ce que c'est le noyau ( Chrome Webkit ) ou une différence de mise en œuvre de la version d'Android à blâmer ?
Comment puis-je résoudre ce problème ?

0voto

Si vous créez une nouvelle activité, que vous masquez la barre d'action et que vous ajoutez la balise WebView dans le fichier xml de votre activité, vous ne rencontrerez plus ce problème. Et vous pouvez obtenir le mode plein écran. Mais c'est un bug dans Android WebView et Google a poussé une mise à jour pour résoudre ce bug.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X