¿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:

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"); 

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(); } 
  • Youtube Video en WebView no se carga
  • Youtube YouTubePlayerSupportFragment no funciona correctamente (¿cargando siempre?)
  • Implementar Youtube Subscribe Button en Android
  • Al cambiar la orientación de la pantalla, se crea una nueva actividad
  • Detener el video de youtube después de 1-2 segundos
  • ¿Por qué Android WebView no está cargando youtube HTML5 iframe video?
  • Reproducir Youtube HTML5 incrustado de vídeo en Android WebView
  • Permiso de la API de Youtube 403 Error prohibido
  • "403 - useLimits" en la API de youtube
  • Cómo cargar las miniaturas de Youtube en un RecyclerView utilizando la API de Youtube
  • Agrega API de datos de Youtube en Android Studio usando Gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.