Android 未使用HTTPS显示WebView图像

Android 未使用HTTPS显示WebView图像,android,android-webview,Android,Android Webview,我的应用程序打开一个web视图以显示HTML页面,该页面由HTTPS托管,其中包含一个图像(来自http的图像)。在某些设备上,图像不显示,但对于所有其他设备,图像工作正常。 我检查了多台设备,如Nexus、三星s6/s4、Moto G2和其他设备。仅在三星S4/S6上,nexus图像未显示。但对于所有其他设备,其工作正常。甚至我也尝试过WI-FI、数据载体和多个操作系统版本,但没有成功 请帮忙解决这个问题 一些意见: 1) 在每台设备上,我都收到相同的警告:- [阻止]通过HTTPS加载了位于

我的应用程序打开一个web视图以显示HTML页面,该页面由HTTPS托管,其中包含一个图像(来自http的图像)。在某些设备上,图像不显示,但对于所有其他设备,图像工作正常。 我检查了多台设备,如Nexus、三星s6/s4、Moto G2和其他设备。仅在三星S4/S6上,nexus图像未显示。但对于所有其他设备,其工作正常。甚至我也尝试过WI-FI、数据载体和多个操作系统版本,但没有成功

请帮忙解决这个问题

一些意见:

1) 在每台设备上,我都收到相同的警告:- [阻止]通过HTTPS加载了位于“页面url”的页面,但显示了来自“图像源”的不安全内容:此内容也应通过HTTPS加载

2) 如果我在web浏览器中打开同一页,则可以在所有设备上正常工作

我的代码

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();
    }


}

使用以下代码。您可以使用以下代码打开https, 扩展
WebViewClient
onrevievedsslerror
方法,并在出现任何错误时继续 这里有一个例子

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

}

实际上,它是webview的SSL属性,所以要处理这个问题,您必须使用以下代码

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

在处理程序中,您可以轻松运行webview图像url。

在webview上使用HTTP和HTTPS的混合内容在启动棒棒糖时默认被禁用。是否有可能在使用棒棒糖的设备上不起作用? 如果是这种情况,您可以使用以下方法更改棒棒糖的默认WebView设置:

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
此处的文档:

可能是自签名证书的问题,您能检查一下这个问题吗。我正在注释中添加代码。如果我遗漏了什么,请查看并告诉我。谢谢你是救世主:)@AjitSharma对于来自谷歌的任何人来说,更好的选择可能是使用
网站设置。混合内容\u兼容性\u模式
,因为这将允许图像、视频和其他不太可能被用来攻击用户的内容。就像魅力一样。救了我一天。谢谢@PollizzioNot所有英雄都穿斗篷,节省了我很多时间!如果我通过JAR文件从类调用
webview
,并且没有访问
webview
对象的权限,我如何强制执行此设置?不要在ReceivedSler上实现此设置,否则Google play将拒绝您的应用程序