Intereting Posts
Как получить доступ к папке данных / данных на устройстве Android? SavedInstanceState при восстановлении фрагмента из заднего стека Замена ViewPager на фрагмент – затем переход назад Как установить индикатор прогресса Android в центре экрана Активность kill / onCreate вызвана после съемки с помощью намерения Установите OnClickListener для элементов в ListView с двумя представлениями Google Maps V2 показывает пустой экран на Android 2.2 Какой из них лучше всего рассчитать расстояние между двумя точками? Является ли FCM (firebase cloud messaging) токеном для одного устройства или для одной учетной записи? Разница между GL10 и GLES10 на Android Фон вокруг круга Android становится овальным SQLite: не удается привязать аргумент к индексу 1, потому что индекс выходит за пределы диапазона. Оператор имеет 0 параметров Как установить фоновое изображение в android Android: как развернуть и свернуть размер экрана в RecyclerView Android – Карусель, как виджет, который отображает часть левого и правого элементов

Android WebView SSL «Предупреждение о безопасности»

Я создаю тестовую версию приложения для клиента. Часть этого приложения использует WebView, который вызывается на сайт, основанный на SSL. В свою очередь, клиент предоставил тестовый домен, где имя сертификата не соответствует FQDN. Увы, они не в состоянии предоставить сертификат, который соответствует. 🙁

Я работаю над этой проблемой в сопутствующем приложении iOS ad hoc с одной строкой кода (опять же, не для использования в производстве – только для тестовых целей). Я искал аналогичную информацию об ОС Android, но решений, которые я видел здесь и в других местах, достаточно, чтобы сделать мою голову отличной для сравнения!

Есть ли простой способ обойти это? Даже где-то где-то устроились пользовательские настройки?

Ключи оценены!

Solutions Collecting From Web of "Android WebView SSL «Предупреждение о безопасности»"

Создайте WebViewClient и обработайте onReceivedSslError, который выглядит так:

public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) 

Внутри этого обратного вызова вы можете просто вызвать handler.proceed() и страница продолжит загрузку. Если вы не обрабатываете этот обратный вызов и вызываете метод proceed() то поведение по умолчанию будет для загрузки страницы.

Обновленный ответ в соответствии с новым обновлением политики безопасности 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(); 

}