为什么Youtube视频不能在webview android中播放

为什么Youtube视频不能在webview android中播放,android,webview,youtube,sdk,html5-video,Android,Webview,Youtube,Sdk,Html5 Video,我有简单的android网络视图,我想通过URL播放视频。 但显示错误的视频无法在webview中播放。 以下是我的源代码:- WebView webView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.livepage); //Toolbar toolbar = (Toolbar) fi

我有简单的android网络视图,我想通过URL播放视频。 但显示错误的视频无法在webview中播放。

以下是我的源代码:-

WebView webView;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.livepage);
    //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_bottom7);
    webView = (WebView)findViewById(R.id.webView);
    WebSettings webSettings = webView.getSettings();
    webSettings.setPluginState(WebSettings.PluginState.ON);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
    webView.loadUrl("https://www.youtube.com/channel/UCLmI8_hVUqA251PzK7OSvQw");
    webView.setWebChromeClient(new WebChromeClient());
    webView.setWebViewClient(new loadWebView());
}

private class loadWebView extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
}
这里是梅尼费斯特:-

<application
   ...
   android:supportsRtl="true"
   android:largeHeap="true"
   android:hardwareAccelerated="true">

提前感谢

试试这个

 String frameVideo = "<html><body>Video From YouTube<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" 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");
String frameVideo=“来自YouTube的视频
”; WebView displayYoutubeVideo=(WebView)findViewById(R.id.mWebView); displayYoutubeVideo.setWebViewClient(新WebViewClient()){ @凌驾 公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){ 返回false; } }); WebSettings WebSettings=displayYoutubeVideo.getSettings(); setJavaScriptEnabled(true); 显示youtubevideo.loadData(框架视频、“文本/html”、“utf-8”);
或者您可以尝试此集成youtube api 对查看Android Youtube播放器API和Youtube API。


根据您的问题,您尚未添加youtube视频链接。您正在使用youtube频道url。无论如何,试试这个。它工作得很好

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String frameVideo = "<html><body><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/PMBcMBhsm80\" 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");
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串frameVideo=“”;
WebView displayYoutubeVideo=(WebView)findViewById(R.id.mWebView);
displayYoutubeVideo.setWebViewClient(新WebViewClient()){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
返回false;
}
});
WebSettings WebSettings=displayYoutubeVideo.getSettings();
setJavaScriptEnabled(true);
显示youtubevideo.loadData(框架视频、“文本/html”、“utf-8”);
}
首次启用

webview.getSettings().setJavaScriptEnabled(true);
然后

如果单击WebView网页内的任何链接,该网页将不会加载到WebView中。为此,您需要从WebViewClient扩展类并重写其方法。其语法是:

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

是的,我找到了这个问题的答案, 这里是解决方案

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_bottom7);
    webView = (WebView)findViewById(R.id.videoView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.loadUrl("https://www.youtube.com/channel/UCLmI8_hVUqA251PzK7OSvQw");

    webView.setWebViewClient(new loadWebView());
}
private class loadWebView extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
需要添加

webSetting.setDomStorageEnable(true);

为我工作很好

首先我想打开我的频道,然后我想播放视频。您是否在清单中添加了Internet权限和相关权限?是。。我已添加权限..我的频道页面正在打开,但在播放视频时显示错误occured@Abhay-我已经用真正的设备测试了你的代码。首先,它显示了一个youtube频道,当我点击它时,视频工作正常。请用另一台设备测试一下我要chek@Abhay您是否因为它在我的真实设备上工作而收到任何错误?只需登录真实设备即可使用我的url进行检查..我想先打开频道,然后单击它应该播放的视频..@Abhay确定我尝试过了