【问题标题】:Auto play video in webview在 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");  

【问题讨论】:

    标签: android webview android-webview html5-video qwebview


    【解决方案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.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-20
          • 2013-12-11
          • 1970-01-01
          • 2016-10-25
          • 2019-02-15
          • 2011-01-18
          • 1970-01-01
          相关资源
          最近更新 更多