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?
- Webview dentro de RecyclerView está mostrando pantalla en blanco a veces en los dispositivos de turrón solamente
- Cómo reducir el tamaño de WebView dinámicamente de acuerdo a su contenido?
- Vista web de Android: descarga archivos como los navegadores
- Cómo establecer el tipo de fuente en la vista web
- Problema con webview y scrollview
- ¿Cómo puedo descargar el archivo mediante webview? (Este caso es raro)
- Buscando un menú desplegable en la vista web de Android que esté funcionando
- Soporte de lienzo HTML5 y vista Web de Android
- WebView Atrás, Actualizar, Reenviar? Simplemente no funciona!
- Phonegap Media API (Android) - El soporte no está definido
- Forzar el no-flash Vimeo incrustar o deshabilitar Flash en un WebView?
- ¿Por qué se detiene el Javascript cuando presiona mucho tiempo en un dispositivo Android o iOS?
- Cómo establecer un título diferente para el cuadro de diálogo de alerta cuando se carga la página WebView?
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); }
- Google Cloud Messaging – Error de error de Gradle de los servicios de Google
- Dispositivos Android: asura, águila y ka