15

In meiner app, zeige ich eine externe HTML-Seite entweder in einem CustomTabsIntent oder in einem WebView:Android Browser schneidet die https: // Schema von kompletten Qualifier

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

Aber der Stil dieser HTML ist bereits aktualisiert, aber mein Smartphone zeigt den alten Stil (alte Schriften etc.).

In der * .html-Datei gibt es eine * .css verwiesen:

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

Und in dieser * CSS-Datei, gibt es eine individuelle Schrift verwiesen wird; z.B .:

@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'); 
} 

Wie ich schon sagte, der Chrome-Browser in meinem Smartphone die betreffenden Schriften nicht zeigen, weil es die http schneidet: // oder https: // ab. Wenn ich dieses Schema manuell in die Adressleiste vorstelle, wird der richtige Stil angezeigt.

Wie kann ich das https: // Schema in das Adressfeld in meinem Android-Browser erzwingen, wenn es von meiner Android App aufgerufen wurde?

+1

Ok Ich fand heraus, dass es https://some.where.com/site.html sein sollte. Der Browser wird mit some.where.com/site.html (ohne https: //) geöffnet. Wenn ich manuell "https: //" in der Adressleiste hinzufüge, funktioniert es tadellos –

+0

Kannst du den Code für deine WebView-Implementierung bekannt geben? Wenn das ist, was Sie verwenden? – Destry

Antwort

2

Es könnte Cache sein. Wenn Sie Kontrolle über die HTML-Site haben, ändern Sie das Include zu etwas wie:

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

Danach versuchen Sie es am Telefon. Wenn der Cache gelöscht wird und die neue CSS-Datei abruft, ändern Sie die Nummer in eine zufällig generierte Zahl.

Die Datei wird jedes Mal geladen, wenn sich die Variable "Something" ändert. Wenn Sie diese Stilaktualisierungen nicht so oft durchführen, sollten Sie eine feste Zahl angeben und diese bei jeder Aktualisierung der CSS-Datei erhöhen.

Nach Ihren Informationen über die Schriftarten nicht mit https geladen, könnten Sie versuchen, die onReceivedSslError außer Kraft zu setzen und sehen, es löst das Problem:

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

Seien Sie vorsichtig, diese vollständig deaktiviert ssl Validierung ... it' Eine gefährliche Route.

+0

Es ist kein Cache-Problem. –

+0

Haben Sie versucht, die SSL-Validierung wie vorgeschlagen zu deaktivieren? –

Verwandte Themen