Reputation: 31
i have simple webView in android and i want to play video in that through URL. but it showing error video is not able to play in webview. this error is coming while playing
here is my source code:-
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;
}
}
here is menifest:-
<application
...
android:supportsRtl="true"
android:largeHeap="true"
android:hardwareAccelerated="true">
thanks in advance
Upvotes: 0
Views: 5047
Reputation: 31
yes i found my solution of this question, here solution,
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;
}
}
need to add
webSetting.setDomStorageEnable(true);
working fine for me !!!!!
Upvotes: 3
Reputation: 69671
try this
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");
or you can try this integrate youtube api Yes! Check out the Android Youtube Player API and the YouTube API.
and follow this link to get video from channel
Upvotes: 0
Reputation: 21
First enable
webview.getSettings().setJavaScriptEnabled(true);
And then
If you click on any link inside the webpage of the WebView, that page will not be loaded inside your WebView. In order to do that you need to extend your class from WebViewClient and override its method. Its syntax is:
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
Upvotes: 1
Reputation: 885
According to your question, you haven't added a youtube video link. You are using a youtube channel url. Anyway try this. It works well.
@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");
}
Upvotes: 0