如何在webview中禁用与html5视频的交互或正确捕获其异常?

jan*_*not 10 crash android nullpointerexception android-webview html5-video

我有webview应用程序,我使用ACRA.我收到崩溃报告从用户因与互动的错误HTML5Video.

错误1:

"java.lang.NullPointerException
    at android.webkit.HTML5VideoViewProxy$VideoPlayer.exitFullScreenVideo(HTML5VideoViewProxy.java:180)
    at android.webkit.HTML5VideoViewProxy.exitFullScreenVideo(HTML5VideoViewProxy.java:770)
    at android.webkit.WebViewClassic$PrivateHandler.handleMessage(WebViewClassic.java:7422)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5039)
    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:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)"
Run Code Online (Sandbox Code Playgroud)

错误2:

"java.lang.NullPointerException
    at android.webkit.HTML5VideoFullscreen.switchProgressView(HTML5VideoFullscreen.java:455)
    at android.webkit.HTML5VideoView.enterFullscreenVideoState(HTML5VideoView.java:546)
    at android.webkit.HTML5VideoViewProxy$VideoPlayer.enterFullscreenVideo(HTML5VideoViewProxy.java:182)
    at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:479)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:155)
    at android.app.ActivityThread.main(ActivityThread.java:5485)
    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:1028)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
    at dalvik.system.NativeStart.main(Native Method)"
Run Code Online (Sandbox Code Playgroud)

如果需要,这是我的DropBox日志:

错误1:http://pastebin.com/w8G1UJvG

似乎很有趣:

11-14 22:19:29.912 E/libEGL  (14744): call to OpenGL ES API with no current context (logged once per thread)
11-14 22:19:29.917 W/dalvikvm(14744): threadid=1: thread exiting with uncaught exception (group=0x40d4a2d0)
Run Code Online (Sandbox Code Playgroud)

错误2:http://pastebin.com/8BEK1vAm

似乎很有趣:

12-10 00:14:52.542 W/YourLogTag(24823): Couldn't find activity to view mimetype: video/x-m4v
Run Code Online (Sandbox Code Playgroud)

事实上,我甚至不建议在我的网页浏览中与HTML5视频互动.我想,用户从页面打开它们,也没有提供与之交互.另外我认为尝试禁止用户与其他网页进行交互是一种不好的方式(在我的应用程序中可能真的很难).但是,当他面前出现崩溃对话框时,用户可能不会对我的应用感到温暖的感觉......

所以我想在我的webview中阻止用户与HTML5视频的交互,或者只是正确地捕获异常(似乎不是很好的方法).最好的方法是什么?

以下是我的webview设置,如果需要的话:

webView.getSettings().setJavaScriptEnabled(false);
webView.getSettings().setUserAgentString("Some user agent"); 
Run Code Online (Sandbox Code Playgroud)

Jay*_*yer 2

不幸的是,我无法提供直接答案,但是,我确实发现了一篇有趣的帖子,引发了很多对话。 WebView 和 HTML5 视频

这是一个老问题,但您会注意到,随着时间的推移,越来越新的答案被发布,允许 HTML5 视频工作。希望阅读其中一些答案能让您走上正轨并最终让它为您工作。

我还找到了一个开源项目,它为您解决了这个问题...但是它很旧,不适用于 4.0 及更高版本。 HTML5 网页视图