【问题标题】:Youtube video is not loaded in webview in androidYoutube 视频未加载到 android 的 webview 中
【发布时间】:2017-12-30 23:15:11
【问题描述】:

我想在网络视图中显示 youtube URL。但它没有加载到 web 视图中。

这是我的代码。

     WebView web_view = (WebView) findViewById(R.id.web_view);

    web_view.setWebViewClient(new WebViewClient());
    web_view.getSettings().setJavaScriptEnabled(true);
    web_view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    web_view.getSettings().setPluginState(WebSettings.PluginState.ON);
    web_view.getSettings().setMediaPlaybackRequiresUserGesture(false);
    web_view.setWebChromeClient(new WebChromeClient());

    web_view.loadUrl("https://www.youtube.com/watch?v=s8n16rns-iM");

视频未加载到网络视图中。它显示错误: [INFO: CONSOLE(16)] “不支持键“target-densitydpi”。”,来源:https://m.youtube.com/watch?v=s8n16rns-iM

【问题讨论】:

    标签: android video webview youtube


    【解决方案1】:

    试试这个

     String frameVideo = "<html><body>Video From YouTube<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/watch?v=ue80QwXMRHg&app=desktop\" frameborder=\"0\" allowfullscreen></iframe></body></html>";
    
    WebView displayYoutubeVideo = (WebView) findViewById(R.id.mWebView);
    displayYoutubeVideo.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });
    WebSettings webSettings = displayYoutubeVideo.getSettings();
    webSettings.setJavaScriptEnabled(true);
    displayYoutubeVideo.loadData(frameVideo, "text/html", "utf-8");
    

    【讨论】:

    【解决方案2】:

    要获取特定视频的 html 帧,请将此函数与视频 ID 结合使用,

    public String getHtmlfromVideoId(String videoId) {
            String html = "<iframe class=\"youtube-player\" " + "style=\"border: 0; width: 100%; height: 96%;"
                    + "padding:0px; margin:0px\" " + "id=\"ytplayer\" type=\"text/html\" "
                    + "src=\"http://www.youtube.com/embed/" + videoId
                    + "?&theme=dark&autohide=2&modestbranding=1&showinfo=0&autoplay=1\fs=0\" frameborder=\"0\" "
                    + "allowfullscreen autobuffer " + "controls onclick=\"this.play()\">\n" + "</iframe>\n";
            return html;
        }
    

    视频 ID 通常位于 youtube 网址的 v 参数之后。比如https://www.youtube.com/watch?v=s8n16rns-iM&app=desktop的Video Id是s8n16rns-iM

    获得html框架后,直接在WebView中加载,

    webView.loadData(html, "text/html", "UTF-8");
    

    【讨论】:

    • 我想在 webview 中显示带有该 Url 的整个 youtube
    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2012-01-18
    • 2012-09-24
    • 2012-08-07
    • 2013-03-18
    • 2011-06-23
    相关资源
    最近更新 更多