android - 使用应用程序上下文时,某些 Android 设备中的 WebView 视频全屏模式崩溃

标签 android video webview

众所周知,Webview在某些情况下可能会导致内存泄漏。所以我使用应用程序上下文来构建像 new WebView(getApplicationContext()) 这样的 webview。

我需要让视频全屏,所以我重写了 WebChromeClient#onShowCustomView()。在测试了一些设备之后,每次按下全屏图标都会导致崩溃。

这是痕迹:

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)`

当我使用 Activity 构建 webview 时,它运行良好。

那么这些安卓设备有什么不同呢?
是核心(Chrome Webkit)还是 android 版本的实现差异造成的?
我该如何解决这个问题?

最佳答案

如果您创建一个新 Activity 并隐藏操作栏并在您的 Activity xml 中添加 WebView 标记,您将不会再遇到这个问题。你可以获得全屏模式。但这是 android WebView 中的一个错误,谷歌已经推送了一个更新来解决这个错误。

关于android - 使用应用程序上下文时,某些 Android 设备中的 WebView 视频全屏模式崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38280810/

相关文章:

android - AndEngine Sprite/Box2D Body 移除会导致我的程序崩溃且没有错误/异常信息?

java - OnListItem点击打开一个新的Fragment

algorithm - 在 C++ 中使用 opencv 跟踪 AVI 视频中对象的最佳算法

javascript - 阻止 IE/Edge 预加载视频

Android shouldOverrideUrlLoading 在 KitKat 4.4.3 中不会被调用

android - Android 平台上的浏览器插件查询(Froyo 2.2.1 版本)

java - 安卓程序无法运行

iOS:RTSP 流在后台

iOS UIWebView 限制

android - 在 Webview 中加载一个 Url 并得到它的响应