在 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 中自动播放视频的主要内容,如果未能解决你的问题,请参考以下文章
在 Android WebView 中自动播放嵌入的 YouTube 视频有啥新技巧吗?
android webview youtube嵌入视频自动播放不起作用