Обновлен ответ в соответствии с новым обновлением политики безопасности Google для обработчика ошибок SSL, см. Эту статью для разработчиков Android Справочный центр .
Для предотвращения отклонения заявки в Google Play за нарушение нашей политики злонамеренного поведения.
Чтобы правильно обрабатывать проверку сертификата SSL, измените код так, чтобы он вызывал SslErrorHandler.proceed () всякий раз, когда сертификат, представленный сервером, соответствует вашим ожиданиям, и в противном случае вызывайте SslErrorHandler.cancel ().
Например, я добавляю диалоговое окно с предупреждением, чтобы пользователь подтвердил, и кажется, что Google больше не показывает предупреждение.
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(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;
}
message += " Do you want to continue anyway?";
builder.setTitle("SSL Certificate Error");
builder.setMessage(message);
builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
}