在 webview 中自动播放视频

Posted

技术标签:

【中文标题】在 webview 中自动播放视频【英文标题】:Auto play video in webview 【发布时间】:2016-12-22 20:21:16 【问题描述】:

我是 android 新手,我在 webview 中显示新闻链接。新闻链接包含一个视频。问题是,打开链接后我必须点击视频然后视频正在播放,但我希望该视频应该自动播放。

提前致谢。

我的代码是:

myWebView.getSettings().setjavascriptEnabled(true);
myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
myWebView.getSettings().setPluginState(PluginState.ON);         

myWebView.setWebViewClient(new WebViewClient() 
    public void onPageFinished(WebView view, String url)  web.loadUrl("javascript:(function()  document.getElementsByTagName('video')[0].play(); )()"); 
    );

myWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
myWebView.setWebChromeClient(new WebChromeClient());
myWebView.loadUrl("http://aajtak.intoday.in/livetv.html");  

【问题讨论】:

【参考方案1】:
myWebView.setWebViewClient(new WebViewClient() 
  public void onPageFinished(WebView view, String url) web.loadUrl("javascript:(function()  document.getElementsByTagName('video')[0].play(); )()"); 
);

您应该在 WebView 上实现 loadUrl... 只需将web.loadUrl 替换为view.loadUrl 就可以了

【讨论】:

它在控制台中给我一个错误:Uncaught TypeError: Cannot read property 'play' of undefined",来源: 给出的错误意味着 JavaScript 代码 document.getElementsByTagName('video') 返回一个空列表,这意味着您的视频没有放在 HTML 中的 <video></video> 标记内。【参考方案2】:

myWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);

https://developer.android.com/reference/android/webkit/WebSettings.html#setMediaPlaybackRequiresUserGesture(boolean)

注意:仅适用于 API 级别 17 及以上。

【讨论】:

我不知道它是否可以在所有情况下启用视频自动播放,但完美我。非常感谢。 这可行,但我也必须在 JS 中手动指定:document.getElementById("video").muted = "true"; 仅在 HTML 中设置 muted 对我不起作用。如果您只是使用此代码,请确保您与视频的 HTML ID 匹配。【参考方案3】:

webview 上的视频不支持“自动播放”。 所以我们应该手动开始视频: 安卓:

@Override
public void onPageFinished(WebView view, String url) 
 super.onPageFinished(view, url);
 view.loadUrl("javascript:onPageFinished();"); 

JS:

function onPageFinished() 
    var video = document.getElementById("video");
    video.play();

【讨论】:

【参考方案4】:

这对我有用。

webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

使用上述方法,打开链接后无需点击视频,视频自动播放。

【讨论】:

【参考方案5】:

只要让你的 webview 认为他是在 PC 而不是移动设备上运行 插入这个 os MainActivity 文件

webView.getSettings().setUserAgentString("1");//for desktop 1 or mobile 0.

【讨论】:

以上是关于在 webview 中自动播放视频的主要内容,如果未能解决你的问题,请参考以下文章

iOS 自动播放视频 WebView

在 Android WebView 中自动播放嵌入的 YouTube 视频有啥新技巧吗?

android webview youtube嵌入视频自动播放不起作用

Android webview html5 视频自动播放在 android 4.0.3 上不起作用

解决部分WebView无法播放视频的情况

在 Android 上的 WebView 中播放本地视频