¿Cómo detener el video de YouTube en la vista web de Android?
¿Cómo puedo detener un video de YouTube que se reproduce en mi webview? Cuando hago clic en el botón Atrás, el video no se detiene y en su lugar continúa en segundo plano.
Código:
- Principal java.lang.RuntimeException: No se puede iniciar la actividad ComponentInfo
- YouTube Player API en android ya no funciona bien
- Botón de pantalla completa de Video dentro de WebView no funciona
- Continuar la reproducción del reproductor de YouTube mientras gira el dispositivo con diseños de orientación separados
- Cómo reproducir vídeos de YouTube en WebView en Amazon Fire TV?
webView = (WebView) findViewById(R.id.webview); webView.getSettings().setPluginsEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setBuiltInZoomControls(false); webView.getSettings().setSupportZoom(false); webView.loadData(myUrl,"text/html", "utf-8");
- ¿Cómo acceder a una lista de videos de youtube desde android usando googleapiclient?
- Cómo utilizar Youtube Player con UI moderna en Android usando YoutubePlayerSupportFragment
- Android / Java: comprueba si url es url válida de youtube
- ¿Está prohibido transmitir vídeo de YouTube en segundo plano?
- Reproduce vídeos de Youtube en la vista de vídeo en android
- Mostrar video de Youtube en viewpager
- ¿Por qué mi youtube en webview reproduce sólo sonido?
- Analizar una miniatura de YouTube en un iframe con Jsoup
Consulte la siguiente publicación acerca de los subprocesos de WebView que nunca se detienen
Esencialmente tendrá que llamar al método onPause de WebView desde el método onPause de su propia actividad.
El único truco con esto es que no se puede llamar directamente al método onPause de WebView porque está oculto. Por lo tanto, tendrá que llamar indirectamente a través de la reflexión. El siguiente código debería empezar a configurar el método OnPause de su propia actividad:
@Override public void onPause() { super.onPause(); try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { ... } catch(NoSuchMethodException nsme) { ... } catch(InvocationTargetException ite) { ... } catch (IllegalAccessException iae) { ... } }
Tenga en cuenta que la variable 'webview' en el bloque try anterior es una variable de instancia privada para la clase y se asigna en el método onCreate de la actividad.
Solución: 1 – Después de pasar mucho tiempo, conseguí la conclusión de pausar el video que está jugando con WebView <iframe>
concepto de HTML.
Simplemente anule el método onPause()
en Actividad o Fragmento dondequiera que utilice WebView
y onPause()
. Esto funciona para mi.
@Override public void onPause() { super.onPause(); mWebView.onPause(); } @Override public void onResume() { super.onResume(); mWebView.onResume(); }
Solución: 2 – Si la solución anterior no funciona para usted, puede obligar a WebView a cargar un archivo html no existente.
mWebview.loadUrl("file:///android_asset/nonexistent.html");
También tiene que implementar el método onResume () o la segunda vez no funcionan
@Override public void onResume() { super.onResume(); webView.onResume(); } @Override public void onPause() { super.onPause(); webView.onPause(); }
La solución anterior falló para mí en Samsung Galaxy S con Android 2.3.3. Pero hice el éxito que intentaba la solución siguiente:
webview.loadUrl("file:///android_asset/nonexistent.html");
Estoy obligando a la webvista a cargar un archivo html no existente. Esto parece estar forzando la webview a limpiar las cosas.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode==event.KEYCODE_BACK) { mWebview.loadUrl(""); mWebview.stopLoading(); finish(); } return super.onKeyDown(keyCode, event); }
funciona
Y aquí está mi favorito personal:
@Override protected void onPause() { super.onPause(); if (isFinishing()) { webView.loadUrl("about:blank"); } else { webView.onPause(); webView.pauseTimers(); } } @Override protected void onResume() { super.onResume(); webView.resumeTimers(); webView.onResume(); }
Hacer una pausa en la vista web si la vista sólo se pausa, pero se borra cuando se termina la actividad.
Esto requiere al menos Android 3.0 – API 11 (Honeycomb)
Webview.loadUrl ("about: blank");
Tambien esta trabajando
Después de haber encontrado este problema parece que onPause podría no estar haciendo nada … para mí no fue detener lo que estaba jugando en segundo plano.
Así que mi código ahora parece
@Override protected void onPause() { mWebView.onPause(); super.onPause(); } @Override protected void onResume() { mWebView.onResume(); super.onResume(); } @Override protected void onSaveInstanceState(Bundle outState) { mWebView.saveState(outState); super.onSaveInstanceState(outState); } @Override protected void onDestroy() { mWebView.destroy(); mWebView = null; super.onDestroy(); }
Espero que ayude a alguien con el mismo problema que yo
Prueba esto:
@Override public void onPause() { super.onPause(); myWebView.onPause(); myWebView.pauseTimers(); } @Override public void onResume() { super.onResume(); myWebView.resumeTimers(); myWebView.onResume(); } @Override protected void onDestroy() { myWebView.destroy(); myWebView = null; super.onDestroy(); }
Esto funciona para mí.
@Override protected void onPause() { super.onPause(); if (wViewCampaign != null){ wViewCampaign.stopLoading(); wViewCampaign.loadUrl(""); wViewCampaign.reload(); wViewCampaign = null; } }
Puede hacerlo utilizando el método onPause()
del WebView cuando se ejecuta el método onPause()
de su Activity
:
@override public void onPause() { super.onPause(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ webview.onPause(); } }
- Funciona para
API >= 11
(Honeycomb
)
Esto es lo que finalmente funcionó después de probar todos y cada uno de los códigos proporcionados en esta página. Uff!
@Override protected void onPause() { super.onPause(); if (mWebView != null) { mWebView.stopLoading(); mWebView.reload(); } } @Override protected void onResume() { super.onResume(); }
Puedes probar esto
webView.loadUrl("javascript:document.location=document.location");
Si la página que está cargando es una que usted puede corregir entonces usted puede escribir un método del javascript que pare el audio y la llamada cuando usted desea parar como.
Función Javascript
function stopAudio(){ audios=document.querySelectorAll('audio'); for(i=0;i<audios.length;i++){ audios[i].stop(); } }
De Andorid Llame a este método
webView.loadUrl("javascript:stopAudio()");
Si la página no es editable por usted el usted puede inyectar el código de js
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); injectScriptFile(view, "js/script.js"); }
Cómo Inyectar Vea Aquí Detallado
Este código funciona perfecto para mí.
@Override protected void onPause() { super.onPause(); wv.onPause(); wv.pauseTimers(); } @Override protected void onResume() { super.onResume(); wv.resumeTimers(); wv.onResume(); }