いつもお世話になっております。
kotlin + webviewでwebviewアプリの作成をしております。
https://goole.co.jpは読み込めるのに、本来読み込みたいサイト(下記サンプルソースの https://example.com )のURLを指定すると、なぜか画面が真っ白になってしまい、調査をしていたところ、こちらに記載のあるようにSSLのエラーがLogcatに出ておりました。
E/chromium: [ERROR:ssl_client_socket_impl.cc(941)] handshake failed; returned -1, SSL error code 1, net_error -202
下記のようなコードで onReceivedSslError
をオーバーライドして handler.proceed()
を設定する事でページ自体を表示させる事は出来たのですが、上記の参考サイトにIf you do not upload your app to the Play Store, you can just ignore SSL certificate errors
とあったので、ストアにこのまま出してはいけないのかなと思い、解決策を模索しております。
chromeのデベロッパーツールのSecurityタブでは、HTTPSの検査は問題ないように見えており、何が原因なのかわからず、困っております。
どなたか、解決策をご教授頂けますと幸いでございます。
MainActivity.kt
import android.net.http.SslError import android.os.Bundle import android.webkit.SslErrorHandler import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { private lateinit var webView: WebView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) webView = findViewById(R.id.webview) as WebView webView.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { android.util.Log.d("MainActivity", url) view?.loadUrl(url) return true } override fun onReceivedSslError( view: WebView?, handler: SslErrorHandler, error: SslError? ) { android.util.Log.d("MainActivity", error.toString()) handler.proceed() // Ignore SSL certificate errors } } webView.loadUrl("https://www.example.com") } }
SslErrorの内容
D/MainActivity: primary error: 3 certificate: Issued to: CN=www.example.com,OU=Domain Control Validated,C=JP; Issued by: CN=AlphaSSL CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE; on URL: https://www.example.com/
確認した端末
- SO-01M (Android9)
- Pixel 3a (Android10)
- エミュレータ
上記それぞれ、同じ結果となりました。
あなたの回答
tips
プレビュー