15

が、私はWebViewの中CustomTabsIntentかのいずれかで外部HTMLサイトを示しています。Androidのブラウザは、HTTPSをカット:完全修飾子から//スキーム私のアプリで

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

しかし、HTMLのスタイルがすでにあります更新されましたが、私のスマートフォンは古いスタイル(古いフォントなど)を示しています。

が* .htmlのファイルで参照*の.cssのがあります:

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

そして、その* .cssファイルでは、参照先の個々のフォントがあります。例えば:

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

私が言ったように、それはHTTPをカットするので、参照されたフォントが表示されないスマートフォンでChromeブラウザ://またはます。https://オフ。 アドレスバーに手動でそのスキームを追加すると、適切なスタイルが表示されます。

私のアンドロイドブラウザからアドレス欄にhttps://方式を強制するにはどうすればできますか?

+1

私はhttps://some.where.com/site.htmlであることがわかりました。ブラウザはsome.where.com/site.html(https://なし)で開かれます。アドレスバーに手動で「https://」を追加すると、それは完全に動作します –

+0

WebView実装のコードを投稿できますか?それがあなたが使っているものなら? – Destry

答えて

2

キャッシュである可能性があります。 htmlサイトを管理している場合、インクルードを次のように変更してください。

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

その後、電話で試してみてください。キャッシュがクリアされて新しいcssファイルが取得された場合は、番号をランダムに生成された番号に変更します。

"something"変数が変更されるたびにファイルを読み込みます。 これらのスタイルの更新をあまり頻繁に行わない場合は、固定数にして、CSSファイルを更新するたびに増やしてください。

問題、あなたはonReceivedSslErrorを上書きしようとすると、それを見ることができhttpsでロードされていないフォントであなたの情報を解き、次のとおりです。

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

は注意してくださいが、これは完全にit' ... SSL検証を無効にします危険なルート。

+0

キャッシュの問題ではありません。 –

+0

ssl検証を無効にしてみましたか? –

関連する問題