s Android中的WebView中加载非Http的URL导致net::ER

最近开发遇到中加载一个百度网盘的URL(加载的URL为https开头的),使用的是应用中来加载实现的,就出现了net::ME的错误:如下图:
一、出现的原因
因为只能识别http, https这样的协议,像一些支付宝(://)、微信(://)、去哪儿(://),他们自定义的协议是无法识别的,因此就会出现:ME这样的错误 。
一般会“位于:………………的网页无法加载,因为 net:ME”,在这里我们就可以看到无法打开的协议 。

s  Android中的WebView中加载非Http的URL导致net::ER

文章插图
二、解决的方法为
给设置,并重写中的ding方法.
【sAndroid中的WebView中加载非Http的URL导致net::ER】首先我们来了解下ding( view,url)方法,该方法会在加载超链接时回调过来,所以通过重写ding,可以实现对网页中超链接的拦截;返回值为型,是true的时候控制去打开,为false调用系统浏览器或第三方浏览器 。默认false
所以,我们可能在有的博文中看到不去重写该方法也可以解决ME这个错误 。
这里我们讲下重写ding来解决 。
webView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (url == null) return false;try{if(!url.startsWith("http://") && !url.startsWith("https://")){Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);return true;}}catch (Exception e){//防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)return true;//没有安装该app时,返回true,表示拦截自定义链接,但不跳转,避免弹出上面的错误页面}//下面的两种方式选择使用其中一种即可// TODO Auto-generated method stub//1:返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器view.loadUrl(url);return true;//2:或者使用如下的加载方式:return super.shouldOverrideUrlLoading(view, url);}});
3:终极解决方案:
如果上述方法使用不行的话,直接在该界面的原生替换成腾讯定制版的(com..smtt.sdk.)
再次尝试基本可以解决 。