Android WebView no cargar contenido mixto

Estoy tratando de hacer una aplicación con WebView, pero el sitio web está usando https , pero el contenido (por ejemplo, archivo mp3) utiliza http , por lo que Android Lollipop no lo cargará porque es "contenido mixto". Intenté usar onReceivedSslError handler.proceed(); , Pero no carga nada. ¿Hay alguna forma de arreglarlo? O podría hacer que todos los sitios web cargar el uso de http , por lo que no muestra ningún error?

Desde Lollipop (API 21), WebView bloquea todos los contenidos mixtos de forma predeterminada .

Para cambiar este comportamiento, cuando esté orientado a API de nivel 21 o superior , utilice:

 webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); 

En este modo, el WebView intentará ser compatible con el enfoque de un navegador web moderno con respecto al contenido mixto. Algunos contenidos inseguros pueden ser cargados por un origen seguro y otros tipos de contenido serán bloqueados. Los tipos de contenido permitidos o bloqueados pueden cambiar la versión para liberar y no se definen explícitamente.

En la práctica, esto debería permitir la carga de imágenes, videos, música, etc. – todo el contenido que tiene baja probabilidad de ser una amenaza de seguridad importante, cuando se altera / reemplaza por terceros malintencionados.


Alternativamente use (fuertemente desalentado) :

 webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 

En este modo, WebView permitirá que un origen seguro cargue contenido de cualquier otro origen, incluso si ese origen es inseguro. Este es el modo de operación menos seguro para el WebView, y donde las aplicaciones posibles no deben establecer este modo.

Si su API min es menor de 21 y no puede llamar a setMixedContentMode directamente, puede utilizar la reflexión:

 try { Method m = WebSettings.class.getMethod("setMixedContentMode", int.class); if ( m == null ) { Log.e("WebSettings", "Error getting setMixedContentMode method"); } else { m.invoke(webView.getSettings(), 2); // 2 = MIXED_CONTENT_COMPATIBILITY_MODE Log.i("WebSettings", "Successfully set MIXED_CONTENT_COMPATIBILITY_MODE"); } } catch (Exception ex) { Log.e("WebSettings", "Error calling setMixedContentMode: " + ex.getMessage(), ex); } 
  • Activar opción de zoom en WebView Android
  • Android - AdSense en WebView (para BlackBerry Playbook - Android Runtime)
  • Webview dentro de NestedScrollView causa problema de altura
  • ¿Cuál es el archivo html más grande que se puede cargar en un WebView de Android?
  • Android WebView dentro de ScrollView solo desplaza scrollview
  • ¿Cómo iniciar una actividad de Android cuando se inicia una aplicación PhoneGap?
  • Android WebView desplazamiento suave
  • Android: Hacer una vista Web DomStorage persistente después de cerrar la aplicación
  • Chromium webview no parece funcionar con Android applyOverrideConfiguration
  • WebView no se muestra correctamente
  • ¿Cómo detengo Flash después de dejar un WebView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.