如何禁用使用H​​TML5视频的互动中的WebView或适当地捕捉他们的异常?他们的、互动、适当、异常

2023-09-07 16:24:18 作者:山川与岛屿

我有一个web视图应用程序,我使用 ACRA 。我收到崩溃报告从用户造成的互动与 HTML5Video 错误。的

错误1:的

 显示java.lang.NullPointerException    在android.webkit.HTML5VideoViewProxy $ VideoPlayer.exitFullScreenVideo(HTML5VideoViewProxy.java:180)    在android.webkit.HTML5VideoViewProxy.exitFullScreenVideo(HTML5VideoViewProxy.java:770)    在android.webkit.WebViewClassic $ PrivateHandler.handleMessage(WebViewClassic.java:7422)    在android.os.Handler.dispatchMessage(Handler.java:99)    在android.os.Looper.loop(Looper.java:137)    在android.app.ActivityThread.main(ActivityThread.java:5039)    在java.lang.reflect.Method.invokeNative(本机方法)    在java.lang.reflect.Method.invoke(Method.java:511)    在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)    在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)    在dalvik.system.NativeStart.main(本机方法) 

错误2:的

 显示java.lang.NullPointerException    在android.webkit.HTML5VideoFullscreen.switchProgressView(HTML5VideoFullscreen.java:455)    在android.webkit.HTML5VideoView.enterFullscreenVideoState(HTML5VideoView.java:546)    在android.webkit.HTML5VideoViewProxy $ VideoPlayer.enterFullscreenVideo(HTML5VideoViewProxy.java:182)    在android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:479)    在android.os.Handler.dispatchMessage(Handler.java:99)    在android.os.Looper.loop(Looper.java:155)    在android.app.ActivityThread.main(ActivityThread.java:5485)    在java.lang.reflect.Method.invokeNative(本机方法)    在java.lang.reflect.Method.invoke(Method.java:511)    在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1028)    在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)    在dalvik.system.NativeStart.main(本机方法) 

下面如果需要的话是我的DropBox 日志:

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

似乎是有趣的:

  11-14 22:19:29.912 E / libEGL(14744):没有当前上下文(记录每个线程一次)调用的OpenGL ES API11-14 22:19:29.917 W / dalvikvm(14744):主题ID = 1:螺纹未捕获的异常(组= 0x40d4a2d0)退出 

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

似乎是有趣的:

  12-10 00:14:52.542 W / YourLogTag(24823):找不到活动查看MIME类型:视频/ X-M4V 

事实上我甚至不建议在我的WebView HTML5视频互动。我猜,用户的网页,也没有提供互动与打开它们。此外,我认为这是一个坏的方式,试图禁止与其他网页用户的交互(而且可能是真的很难在我的应用程序的情况下)。但同时,用户definetely不会遇到温暖的感觉,我的应用程序,当他出现之前崩溃对话框...

所以,我想阻止用户对HTML5视频互动在我的WebView或只是捕捉异常正确(似乎没有太好的办法)。什么是做到这一点的最好方法是什么?

下面是我的WebView设置,如果是需要他们:

  webView.getSettings()setJavaScriptEnabled(假)。webView.getSettings()setUserAgentString(一些用户代理)。 

解决方案

不幸的是,我不会是能够提供一个直接的答案,但是,我发现一个有趣的职位,刺激了很多的谈话。的WebView和HTML5视频

这是一个老问题,但你会发现,随着时间的推移,新的和更新的答案被张贴,允许HTML5视频工作。希望阅读一些这些问题的答案将让你在正确的轨道上,并最终得到它为你工作。

我还发现它解决了该问题你...但它的老和4.0及以上不工作的开源项目。 HTML5的WebView

I have app with webview and I use ACRA. I receive crash reports from users with errors caused by interaction with HTML5Video.

Error 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)"

Error 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)"

Here are my DropBox logs if needed:

for error 1: http://pastebin.com/w8G1UJvG

seems to be interesting:

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)

for error 2: http://pastebin.com/8BEK1vAm

seems to be interesting:

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

In fact I even don't suggest interaction with HTML5 videos in my webview. I guess, users open them from pages, interaction with which is also not provided. Also I think it's a bad way to try to prohibit users interaction with other webpages (and it may be really hard in case of my app). But also, user definetely don't experience a warm feeling to my app, when crash dialog appears before him...

So I want to block users' interaction with HTML5 Video in my webview or just catch exceptions properly (seems to be not very good approach). What's the best way to do it?

Here are my webview settings, if they're required:

webView.getSettings().setJavaScriptEnabled(false);
webView.getSettings().setUserAgentString("Some user agent"); 

解决方案

Unfortunately I'm not going to be able to provide a direct answer, however, I did find an interesting post that spurred a lot of conversation. WebView and HTML5 Video

It's an old question but you'll notice that as time went on, newer and newer answers were posted that allowed HTML5 video to work. Hopefully reading some of those answers will get you on the right track and ultimately get it working for you.

I also found an open-source project which fixed the issue for you...however it's old and doesn't work for 4.0 and up. HTML5 WebView