Android WebView con incrustaciones iframe no se muestra en 4.2.2 ni en la parte inferior

Actualmente estoy intentando implementar un youtube incrustado en mi aplicación Android que utiliza un WebView para mostrar su contenido y estoy apuntando API 14 y superior, pero el problema es el iframe youtube embeds no se muestra en mi webview en 4.2.2 y A continuación, pero funciona bien en la versión 4.3 y superior. Estoy perdido en lo que me perdí pero para la muestra aquí está el código que estoy usando para implementar:

String customHtml = ""; String video; // = "<iframe src=\"http://www.youtube.com/embed/" + "dRvIiIVoVNw" + "\" width=\"100%\" height=\""+ 320 +"px\" frameborder=\"0\"></iframe>"; video = "<div id=\"player\"></div>" + " <script>" + " var tag = document.createElement('script');" + " tag.src = \"https://www.youtube.com/iframe_api\";" + " var firstScriptTag = document.getElementsByTagName('script')[0];" + " firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);" + " var player;" + " function onYouTubeIframeAPIReady() {" + " player = new YT.Player('player', {" + " height: '390'," + " width: '640'," + " videoId: 'dRvIiIVoVNw'," + " events: {" + " 'onReady': onPlayerReady," + " 'onStateChange': onPlayerStateChange" + " }" + " });" + " }" + " function onPlayerReady(event) {" + " event.target.playVideo();" + " }" + " var done = false;" + " function onPlayerStateChange(event) {" + " if (event.data == YT.PlayerState.PLAYING && !done) {" + " setTimeout(stopVideo, 6000);" + " done = true;" + " }" + " }" + " function stopVideo() {" + " player.stopVideo();" + " }" + " </script>"; customHtml = "<html>" + "<body>" /*add the video here*/ + video + "<b><font size=\"" + 5 + "\">" //+ "<div id='wrap'>" + "Test title" + "</font></b>" + "<font size=\"" + 3 + "\"><br><br><i>Detail1: " + "Test" + "<br/>" + new_date + "<br />Detail2: "+ "Test" +"</i></font><br><br>" + "<font size=\"" + 3 + "\">" + "Detail content" + "</font>" + "<br><br><br></body></html>"; webView.loadData(customHtml, "text/html; charset=utf-8", "UTF-8"); webView.getSettings().setJavaScriptEnabled(true); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); webView.setWebViewClient(new DetailWebViewClient()); 

DetailWebViewClient es sólo una simple anulación:

 private class DetailWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("http")) { Intent webView = new Intent(getBaseContext(), ActivityWebView.class); webView.putExtra("url", url); startActivity(webView); return true; } return false; } @Override public void onReceivedError(WebView view, int errorCode, String description, String callbackUrl) { super.onReceivedError(view, errorCode, description, callbackUrl); Toast.makeText(getBaseContext(), description + " errorcode=" + errorCode, Toast.LENGTH_SHORT) .show(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } } 

Ahora lo que he intentado es el iframe uno y el iframe API aquí, pero no hay suerte en ambos.

También uso android:hardwareAccelerated="true" en mi manifiesto pero todavía no funciona. También he buscado en otras preguntas con los mismos problemas pero todas esas soluciones no funcionaron ni en mi final (WebChromeClient, PluginsEnabled, HardwareAccelerated). Espero que alguien me pueda ayudar en esto.

Arreglado ya y el problema es estas líneas:

 webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); 

Así que aquí está la configuración completa de webview que usé:

  webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); webView.getSettings().setSupportMultipleWindows(true); webView.setWebChromeClient(new WebChromeClient()); webView.setHorizontalScrollBarEnabled(false); webView.loadData(customHtml, "text/html; video/mpeg", "UTF-8"); webView.setWebViewClient(new DetailWebViewClient()); 

Y ahí vas ahora trabajando bien en mi final. 🙂

  • YouTube Player API en android ya no funciona bien
  • Vídeos múltiples de YouTube para Android en la actividad
  • Los controles de YouTube (reproducción / pausa) no funcionan después de restaurar el reproductor / se reanuda la actividad
  • No se puede transmitir YouTube Url en VLC android
  • Aplicación de reproductor de youtube para Android, reproducción de Google rechazada para jugar en segundo plano
  • Android WebView - Los vídeos de Youtube que no se reproducen dentro de la aplicación
  • Youtube Video en WebView no se carga
  • Reproduce vídeos de Youtube en la vista de vídeo en android
  • Cómo hacer miniaturas de vídeo de YouTube en android?
  • RTSP enlace de youtube
  • CircularRedirectException con autenticación de google
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.