Подтвердить что ты не робот

Изображения WebView не отображаются с помощью HTTPS

Мое приложение открывает веб-представление, чтобы показать HTML-страницу, размещенную с HTTPS, содержит одно изображение (изображение, исходящее из http). На некоторых устройствах изображение не отображается, но для всех остальных устройств он работает нормально. Я проверил несколько устройств, таких как Nexus, Samsung s6/s4, Moto G2 и другие. Изображение не отображается на Samsung S4/S6. но для всех остальных устройств он работает нормально. Даже я пробовал с WI-FI, носителем данных и несколькими версиями ОС, но не повезло.

Пожалуйста, помогите решить эту проблему.

некоторые наблюдения: -

1) На каждом устройстве я получаю такое же предупреждение: - [заблокировано] Страница на странице < URL-адрес страницы "загружена поверх HTTPS, но отображается небезопасное содержимое из источника изображения": этот контент также должен быть загружен поверх HTTPS.

2) та же самая страница, если я открываю веб-браузер, отлично работаю на всех устройствах.

Мой код

mWebView = (WebView) findViewById(R.id.m_web_view);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mainUrl = bean.getUrl();
    mWebView.loadUrl("javascript:window.location.reload( true )");
    mWebView.loadUrl(mainUrl);
    mWebView.setWebViewClient(new myWebClient());



    private class myWebClient extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    //some code
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        //some code
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler,
            SslError error) {
        handler.proceed();
    }


}
4b9b3361

Ответ 1

Смешанный контент с использованием HTTP и HTTPS в WebViews по умолчанию отключен от Lollipop. Возможно, что не работает на устройствах с Lollipop? Если это так, вы можете изменить настройки WebView по умолчанию на Lollipop, используя:

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

Документация здесь: http://developer.android.com/reference/android/webkit/WebSettings.html#setMixedContentMode(int)

Ответ 2

Используйте следующий код. Вы можете открыть https, используя следующий код,  расширьте onReveivedSslError метод WebViewClient и продолжайте, если произошла какая-либо ошибка Вот пример

    WebView webview= (WebView) findViewById(R.id.my_webview);
    webview.setWebViewClient(new WebViewClient() {
     public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
     handler.proceed() ;
     }

}

Ответ 3

На самом деле это свойство SSL для webview, поэтому для этого вам придется использовать следующий код.

engine = (WebView) findViewById(R.id.my_webview);
engine.setWebViewClient(new WebViewClient() {
 public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
 handler.proceed() ;
 }
}

И в обработчике вы можете легко запустить URL-адрес изображения веб-страниц.