为啥 Youtube 视频没有在 webview android 中播放
Posted
技术标签:
【中文标题】为啥 Youtube 视频没有在 webview android 中播放【英文标题】:why Youtube Video is Not Playing in webview android为什么 Youtube 视频没有在 webview android 中播放 【发布时间】:2017-12-29 14:50:44 【问题描述】:我在 android 中有简单的 webView,我想通过 URL 播放视频。 但它显示错误视频无法在 webview 中播放。 this error is coming while playing
这是我的源代码:-
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">
提前致谢
【问题讨论】:
inducesmile.com/android/… 【参考方案1】:是的,我找到了这个问题的解决方案, 这里的解决方案,
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);
对我来说工作得很好!!!!!
【讨论】:
【参考方案2】:根据您的问题,您尚未添加 youtube 视频链接。您正在使用 youtube 频道网址。无论如何试试这个。效果很好。
@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");
【讨论】:
首先我想打开我的频道,然后我想播放视频。 你是否在manifest中添加了Internet权限和相关权限? 是的..我已经添加了权限..我的频道页面正在打开,但是在播放视频时它正在显示..发生错误 @Abhay - 我已经用真实设备测试了你的代码。首先它显示了一个 youtube 频道,当我点击它时,视频工作正常。请在其他设备上进行测试 我要去看看【参考方案3】:首先启用
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;
【讨论】:
【参考方案4】:试试这个
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");
或者你可以试试这个集成 youtube api 是的!查看 Android Youtube Player API 和 YouTube API。
Android Player:
YouTube API:
YouTube Player API Sample
and follow this link to get video from channel
【讨论】:
@Abhay 你有没有得到任何错误,因为它在我的真实设备上工作只是签入到真实设备 你能检查一下我的网址吗..我想先打开频道然后点击它应该播放的视频.. @Abhay 我试试看以上是关于为啥 Youtube 视频没有在 webview android 中播放的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 UIWebView 的情况下播放 youtube 视频或在 youtube 视频开始使用 webview 播放时检测视频播放器?
如何在我的应用程序中播放 Youtube 视频而不使用 Webview
React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)