0

我知道handler.proceed()Playstore 上不允许使用 SSL。一旦他们的机器人能够在上传的应用程序中找到相同的应用程序,他们就会拒绝该应用程序。出于测试目的,我被要求仅在 UAT 环境中共享带有此 SSL 绕过的 UAT APK。当我尝试使用时handler.proceed(),出现以下错误的空白屏幕

忽略意外的 ssl 错误继续回调

在日志中。我搜索了整个互联网,但没有发现任何有用的东西。下面是我的代码。

override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler, er: SslError?) {
        super.onReceivedSslError(view, handler, er)
        LogHelper.e("check error", "onReceivedError")
        showErrorDialog(handler, er)
}

private fun showErrorDialog(handler: SslErrorHandler, error: SslError?) {
        val builder = activity?.let { AlertDialog.Builder(it) }

        var message = "SSL Certificate error."
        when (error?.primaryError) {
            SslError.SSL_UNTRUSTED -> message = "The certificate authority is not trusted."
            SslError.SSL_EXPIRED -> message = "The certificate has expired."
            SslError.SSL_IDMISMATCH -> message = "The certificate Hostname mismatch."
            SslError.SSL_NOTYETVALID -> message = "The certificate is not yet valid."
        }

        message += " Do you want to continue anyway?"

        builder?.setTitle("SSL Certificate Error");
        builder?.setMessage(message)
        builder?.setPositiveButton(activity?.getString(R.string.button_continue)) { dialog, _ ->
            dialog.dismiss()
            handler.proceed()
        }

        builder?.setNegativeButton(activity?.getString(R.string.cancel)) { _, _ ->
            handler.cancel()
            activity?.onBackPressed()
        }
        builder?.create()?.show()
    }
4

1 回答 1

0

下面是解决方案。无需调用,super.onReceivedSslError(view, handler, er)因为我们只需要在我们这边处理这个问题。尽管这不会阻止您的应用被 Playstore 拒绝。

override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler, er: SslError?) {
        //super.onReceivedSslError(view, handler, er)
        LogHelper.e("check error", "onReceivedError")
        showErrorDialog(handler, er)
}
于 2021-08-20T17:16:12.100 回答