我的应用程序打开一个Web视图来显示HTML页面,该页面由HTTPS托管,其中包含一个图像(来自http的图像)。在某些设备上,图像没有显示,但对于所有其他设备,它的工作正常。 我检查了Nexus,三星s6 / s4,Moto G2等多种设备。仅在三星S4 / S6上,nexus图像未显示。但对于所有其他设备,它的工作正常。即使我尝试使用WI-FI,数据载体和多个操作系统版本,但没有运气。
请帮忙解决这个问题。
一些观察: -
1)在每台设备上我都收到同样的警告: - [已屏蔽]“ 页面网址 ”页面是通过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();
}
}
答案 0 :(得分:57)
默认情况下,启动Lollipop会禁用在WebView上使用HTTP和HTTPS的混合内容。有可能在Lollipop设备上不起作用吗? 如果是这种情况,您可以使用以下方法更改Lollipop上的默认WebView设置:
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
此处的文档: http://developer.android.com/reference/android/webkit/WebSettings.html#setMixedContentMode(int)
答案 1 :(得分:3)
使用以下代码。您可以使用以下代码打开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() ;
}
}
答案 2 :(得分:2)
实际上它是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图像网址。