时间:2021-05-19
1.Android 加载https请求的网页的时候 打不开
当load有ssl层的https页面时,如果这个网站的安全证书在Android无法得到认证,WebView就会变成一个空白页,而并不会像PC浏览器中那样跳出一个风险提示框。因此,我们必须针对这种情况进行处理。(这个证书限于2.1版本以上的Android 系统才可以)
查看Android浏览器源码在TabControl.Java类中SubWindowClient方法中找,如果只是简单的接受所有证书的话,就直接调process()方法就行了
写到这里之后,直接运行是页面是可以打开的。但是打好签名包之后,依旧打不开!!!
一路追踪之后,发现是那个方法被混淆了
所以还要必要在混淆文件proguard.cfg中,加入以下:
-keep public class android.net.http.SslError
-dontwarn android.webkit.WebView
-dontwarn android.net.http.SslError
-dontwarn Android.webkit.WebViewClient
还有一点要提到的是,如果手机添加了代理。也是打不开的
但是sslerror是从2.2才开始提供的。之前的版本怎么办?
可以把android2.2中onReceivedSslError()的源码导入到自己的工程中,具体方法如下:
先把android2.2包中的SslError.java和WebViewClient.java导入到自己的工程中,在导入时需要建立和android2.2源码包中一样的包名。然后在用webview的时候导包就导自己工程里的这个包名就行!
注意一下 webView 要设置的几个地方兴许能帮上忙:
1 . 默认情况下,不能访问 https,需要重写 WebViewClient 的 onReceivedSslError
ps: API Level > 2.1,或者提供 SslError.java 和 WebViewClient.java 文件
重写部分一般可以不做特殊处理,直接 handler.process(); 接受证书即可
2 . 默认情况下,不能弹 js 框,需要重写 WebChromeClient 的 onJsAlert
重写部分也不需要特殊处理,直接返回 super.onJsAlert(view, url, message, result);
pps: 要 setWebViewClient 和 setWebChromeClient,webView 才能生效
2.Android 用webview加载网页 可能会出现另外一种情况:
webview加载的网页是http请求的 ,如果网页里有一张图片,并且该图片的地址是https请求的,这时候用webview加载网页,图片是不显示的。
会报这种错
Mixed Content as loaded over HTTPS, but requested an insecure image
意思是 http请求和https请求混淆了
注意: 用webview加载网页,一定用同一种请求
android 5.0 webview不能加载http与https混合内容的问题
在Android Lollipop上webview默认不允许加载http与https混合内容,比如你访问的网页为http://xxx.com/a.html,则如果a.html包含了https的res,则此res不会显示。如果仔细观察log,可以看到如下的内容提示:
。。。。。。was loaded over HTTPS, but requested an insecure image。。。。。。。。。。
So,该怎么解决呢?很简单,只需设置webSettings,允许其加载混合网络协议内容即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android中WebView的详细解释:1.概念:WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。
详解AndroidWebview加载网页时发送HTTP头信息当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Referer(引荐)发给服务器,因
需求:Android调用webView加载网页的时候,拦截某一个链接不执行此链接,执行指定跳转到其他activity页面。webview的setWebViewC
Androidwebview从Lollipop(5.0)开始webview默认不允许混合模式,https当中不能加载http资源,需要设置开启。解决方法:if(
在Android中,WebView是用来loadhttp和https网页到本地应用的控件。在默认情况下,通过loadUrl(Stringurl)方法,可以顺利l