やりたいこと
XAMPPなどで立てたローカルWebサーバのコンテンツを、WebViewでHTTPS表示させたい(白画面表示の対応)
サンプルコード
Java
WebView webView = (WebView) findViewById(R.id.webView);
String url = "https://192.168.1.1/hoge/";
/* WebView内表示 */
webView.setWebViewClient(new WebViewClient() {
@SuppressLint("WebViewClientOnReceivedSslError")
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
/* SSLエラーを許可扱いにする */
handler.proceed();
}
/* ページ読込 完了 */
public void onPageFinished(WebView view, String url) {
/* ~(読み込み完了時の処理)~ */
}
});
/* Webページ読込開始 */
webView.loadUrl(url);
解説
- デフォルトのWebView にセットされている WebViewClientは、onReceivedSslError() の中で処理をキャンセル(handler.cancel)しているため、白画面が表示される
- WebViewClientを生成時、onReceivedSslError()をオーバーライドして、キャンセル処理を許可(handler.proceed)上書きする
ポイント:本番サービスでは、この対応をしないこと!