Posted at

Androidアプリのwebviewで、https/http混在コンテンツを表示したい時の対応方法(Android L以降)

More than 3 years have passed since last update.

セキュリティ上の理由から、Android L以降ではhttpとhttpsの混在コンテンツのあるページをwebviewで表示しようとすると通信がブロックされるようになった。

※例えば、httpsのページ内でhttpの画像を表示しようとすると通信がブロックされ正しく表示されなくなった。

本来はサーバ側でhttpまたはhttps通信に統一するようにHTMLを修正するのが一番いいんでしょうけど、どうしても対応出来ない時の対応方法。

@SuppressLint("NewApi")

@Override
protected void onCreate(Bundle savedInstanceState) {

WebView webView = (WebView) findViewById(R.id.webView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Andoird L未満と同じ設定にする「MIXED_CONTENT_ALWAYS_ALLOW」
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

}

・参考URL

http://developer.android.com/intl/ja/reference/android/webkit/WebSettings.html#setMixedContentMode%28int%29