暂停WebView视频而不是整个WebView

时间:2017-01-27 11:25:50

标签: android webview android-webview

我有一个WebView的YouTube视频和3个标签。 YouTube视频在第1个标签中可用,而在其他2个标签中则有内容。

现在我想在用户移动到其他标签时暂停视频。我试过

webView.onPause();

Class.forName("android.webkit.WebView")
                                .getMethod("onPause", (Class[]) null)
                                .invoke(webView, (Object[]) null);

但它暂停了整个WebView,我的其他两个标签也没有响应。如何停止视频而不是整个WebView进程

4 个答案:

答案 0 :(得分:1)

您可以从Android评估Javascript并停止视频播放。

  

webView.evaluateJavascript(javascript,callBack);   或旧版本。   webView.loadUrl(JavaScript的);   检查一下   https://developer.android.com/reference/android/webkit/WebView.html#evaluateJavascript(java.lang.String,android.webkit.ValueCallback

你有什么类型的视频? iframe或视频标签?

答案 1 :(得分:0)

在较旧的设备上(api <= 21)我不认为这实际上是可行的,但是检索webview的内部控件的简单方法是:

导航到../Android/android-sdk/tools/androiduiautomator.bat并将其打开。

确保您的设备通过ADB桥接器连接(很可能是它)

获取屏幕的设备屏幕截图并将鼠标悬停在要调用onPause的webkit控件上,这会在屏幕右侧显示一些信息。

替换

的id
Class.ForName("yourId") 

并且只调用一个通用的click事件,它会导致暂停的内部效果。它也可能是

Field.getDeclaredField("Id")

但我并不积极。其中一个应该获得理想的结果。

答案 2 :(得分:0)

您写道,您有一个WebView和3选项卡,您是否在所有选项卡中使用该WebView?

我的解决方案是您在其他选项卡中使用另一个WebView,如果选择了一些可能需要的数据,则发送给他们。

事实上,这并不能解决你的问题,但我希望能解决你的问题。

答案 3 :(得分:0)

我在整个应用程序中都遇到了类似的WebViews故障问题。我决定以相同的方式使用onPause() onResume())的补充功能:

Class.forName("android.webkit.WebView")
     .getMethod("onResume", (Class[]) null)
     .invoke(webView, (Object[]) null);