android - SSL 错误处理程序 WebView Android
问题描述
当我尝试发布我的应用程序时,Google Play 控制台说由于 SSL 错误处理程序,我的应用程序存在漏洞。我按照谷歌帮助中心解决方案https://support.google.com/faqs/answer/7071387,并尝试再次发布,但没有成功。我联系了 Google Play 支持,他们回复了我:
我查看了您的应用程序,版本 10 的 PET 应用程序具有以下类,其中包含 SslErrorHandler 的易受攻击版本:
这是我用来处理 SslError 的代码:
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(SigpetActivity.this);
String message = "SSL Certificate error.";
switch (error.getPrimaryError()) {
case SslError.SSL_UNTRUSTED:
message = "The certificate authority is not trusted.";
break;
case SslError.SSL_EXPIRED:
message = "The certificate has expired.";
break;
case SslError.SSL_IDMISMATCH:
message = "The certificate Hostname mismatch.";
break;
case SslError.SSL_NOTYETVALID:
message = "The certificate is not yet valid.";
break;
}
builder.setMessage(message+" Clique em 'CONTINUAR' para permitir o acesso ao Sigpet");
builder.setPositiveButton("continuar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
finish();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
}
我没有为此使用第三方库,只是 android webkit WebClient。
我该如何解决它以让他们允许我发布我的应用程序?
解决方案
我的猜测是谷歌不喜欢你在回调中调用proceed()
或cancel()
异步。onClick
相反,您应该在onReceivedSslError()
方法本身中同步执行此操作。
推荐阅读
- python - Numpy:计算变量数不定的函数输出矩阵的优雅解决方案
- configuration - Eclipse RCP 产品配置未添加所有必需的插件
- mysql - Mysql按每个日期计算行数据,但只有很少的数据日期
- vba - 如果弹出窗口出现,为什么代码不会越过firevents(“Onchange”)
- postgresql - 将 PostgreSQL 查询存储到变量中
- cassandra - 连接丢失后的多DC复制
- list - 无法从从 BeautifulSoup ResultSet 转换的字典列表中的键中获取值
- c# - 将渐进式 JPEG 转换为基线 JPEG
- angular - ng-smart-table 在自定义操作中访问当前行
- safari - lottie-animated svg 在 Safari 中非常像素化/模糊,但不是 Chrome/FF