El navegador de Android corta el esquema https: // del calificador completo

En mi aplicación, muestro un sitio HTML externo en CustomTabsIntent o en un WebView:

if (customTabsIntent != null) customTabsIntent.launchUrl(this, Uri.parse("http://some.where.com/site.html")); else startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://some.where.com/site.html"))); 

Pero el estilo de ese HTML ya está actualizado, pero mi smartphone muestra el viejo estilo (fuentes antiguas, etc.).

En el archivo * .html hay un * .css referenciado:

 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href='https://my.site.com/assets/css/style.css' rel='stylesheet' type='text/css'> </head> 

Y en ese archivo * .css, hay una fuente individual referenciada; p.ej:

 @font-face { font-family: 'MyFontRegular'; src: url('https://www.openfont.org/assets/mail/fonts/MyFontWeb-Regular.woff') format('woff'), url('https://www.openfont.org/assets/mail/fonts/MyFontWeb-Regular.eot') format('embedded-opentype'); } 

Como he dicho, el navegador de cromo en mi teléfono inteligente no muestra las fuentes de referencia, ya que corta el http: // o https: // desactivado. Cuando prepend ese esquema manualmente en la barra de direcciones, se muestra el estilo apropiado.

¿Cómo puedo forzar el esquema https: // en el campo de dirección en mi navegador android, cuando se llamó desde mi aplicación android?

Podría ser caché. Si tiene control sobre el sitio html, cambie el include a algo como:

 <link href='https://my.site.com/assets/css/style.css?something=132545' rel='stylesheet' type='text/css'> 

Después de eso, pruébelo en el teléfono. Si el caché despeja y extrae el nuevo archivo css, cambie el número a un número generado al azar.

Se cargará el archivo cada vez que cambie la variable "algo". Si realizas esas actualizaciones de estilo no tan a menudo, haz que sea un número fijo y continúa aumentándolo cada vez que actualices el archivo css.

Siguiendo su información sobre las fuentes que no están cargadas con https, podría intentar sobrescribir el onReceivedSslError y verlo resuelve el problema:

  @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } 

Tenga cuidado, esto desactiva completamente la validación de ssl … es una ruta peligrosa.

  • ShouldOverrideUrlLoading (...) no se ejecuta si "window.location.href" modificado en una devolución de llamada de tiempo de espera
  • ¿Qué significa "instalar plugin de Flash" en WebView?
  • sipml5 está funcionando bien para el cromo y el cromo de escritorio y Android, pero es de dos vías de audio no está funcionando en crosswalk y webview nativo
  • WebView no carga la página web
  • Android WebViewClient onReceivedError no se llama para un error 404
  • ¿Cómo escribes y usas correctamente una subclase View en Android?
  • ¿Cómo abrir la página HTML local en el navegador androide nativo (no en la vista web)?
  • Android webview html5 vídeo autoplay no funciona en android 4.0.3
  • Soporte de lienzo HTML5 y vista Web de Android
  • Cómo poblar webview en android con texto sin formato de base de datos y ser capaz de manejar caracteres de nueva línea
  • No se puede eliminar la imagen en div contenteditable en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.