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.

One Solution collect form web for “Android WebView con incrustaciones iframe no se muestra en 4.2.2 ni en la parte inferior”

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. 🙂

  • El botón Reproducir en una incrustación de youtube no funciona en android-chrome
  • API de Youtube: busca videos reproducibles en dispositivos móviles
  • Youtube API "Se ha producido un error al inicializar el reproductor de YouTube".
  • Pausa de la API de YouTube de YouTube cuando gira la pantalla u oculta el reproductor
  • Inicialización del reproductor de YouTube en Fragmento
  • Aplicación para Android de YouTube
  • Haciendo un perfecto reproductor Youtube de Chromeless en Android
  • Error de YouTubePlayerView XML
  • Youtube Video no se muestra en RecyclerView
  • La API de reproductor de YouTube para Android lanza "BadParcelableException ClaseNotFoundException al desmarcar: asc" con la nueva versión de YouTube
  • Notificación de envío cuando se carga un video nuevo en el canal de Youtube
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.