Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何修复kotlin中的WebView SSL错误处理程序问题,以便通过Google play审查_Android_Ssl_Kotlin_Android Security - Fatal编程技术网

Android 如何修复kotlin中的WebView SSL错误处理程序问题,以便通过Google play审查

Android 如何修复kotlin中的WebView SSL错误处理程序问题,以便通过Google play审查,android,ssl,kotlin,android-security,Android,Ssl,Kotlin,Android Security,我向Google play store提交了一个新应用程序,收到了WebView SSL错误处理程序警报,Google play review阻止了我的应用程序上线。请从下面的帮助页面查看谷歌的消息 若要更正此问题,请更新应用程序代码,以便在服务器提供的证书满足您的期望时调用SslErrorHandler.continue(),否则调用SslErrorHandler.cancel()。在检查证书有效性时,请牢记以下几点: 如果应用程序未包含足够的证书有效性检查,则可能会对其进行标记;例如,仅检查

我向Google play store提交了一个新应用程序,收到了WebView SSL错误处理程序警报,Google play review阻止了我的应用程序上线。请从下面的帮助页面查看谷歌的消息

若要更正此问题,请更新应用程序代码,以便在服务器提供的证书满足您的期望时调用SslErrorHandler.continue(),否则调用SslErrorHandler.cancel()。在检查证书有效性时,请牢记以下几点:

如果应用程序未包含足够的证书有效性检查,则可能会对其进行标记;例如,仅检查getPrimaryError的返回值不足以确定证书的有效性

忽略SslError.getPrimaryError返回的大多数SSL错误是不安全的。请注意,getPrimaryError返回一组错误中最严重的错误,因此如果getPrimaryError()!=如果SSL_UNTRUSTED为true,则连接可能仍然在错误集中包含SSL_UNTRUSTED错误

我理解谷歌的要求,但问题是如何在kotlin中实现它。我在这里检查了有关Stackoverflow的类似问题,没有一个建议的解决方案对我有效。我已经实施了建议的解决方案,但谷歌一直拒绝。我不知道这是否可能是因为我看到的大多数解决方案都是2017年及之前的,可能不适合当前使用

我已经为WebViewclient实现了OnReceivedSlerror。我不知道我错过了什么,如果有人能给我指出正确的方向,我将不胜感激,因为我对科特林来说还是个新手。请参见下面我的示例代码:

    private fun setWebClient() {
    webView.webChromeClient = object : WebChromeClient() {
        override fun onProgressChanged(
            view: WebView,
            newProgress: Int
        ) {
            super.onProgressChanged(view, newProgress)
            progressBar.progress = newProgress
            if (newProgress < MAX_PROGRESS && progressBar.visibility == ProgressBar.GONE) {
                progressBar.visibility = ProgressBar.VISIBLE
            }

            if (newProgress == MAX_PROGRESS) {
                progressBar.visibility = ProgressBar.GONE
            }
        }

        webView.webViewClient = object : WebViewClient() {
        override fun onReceivedSslError(
            view: WebView?,
            handler: SslErrorHandler?,
            error: SslError?
        ) {
            super.onReceivedSslError(view, handler, error)
            handler?.cancel()
        }
    }
    }
}
private fun setWebClient(){
webView.webChromeClient=对象:webChromeClient(){
覆盖已更改的进程(
视图:WebView,
新进展:Int
) {
super.onProgressChanged(视图,newProgress)
progressBar.progress=newProgress
if(newProgress