关于腾讯X5类库: WebView加载网页出错:ERR_UNKNOWN_URL_SCHEME
关于腾讯X53.6版类库: WebView加载网页出错:ERR_UNKNOWN_URL_SCHEME一、原因
因为webview只能识别http, https这样的协议,像一些微信(weixin://)、去哪儿(qunaraphone://),他们自定义的协议webView是无法识别的,因此就会出现:ERR_UNKNOWN_URL_SCHEME这样的错误。
一般会“位于:………………的网页无法加载,因为 net:ERR_UNKNOWN_URL_SCHEME”,在这里我们就可以看到无法打开的协议。
二、解决
给WebView设置WebViewClient,并重写WebViewClient中的shouldOverrideUrlLoading方法.
首先我们来了解下shouldOverrideUrlLoading(WebView view, String url)方法,该方法会在加载超链接时回调过来,所以通过重写shouldOverrideUrlLoading,可以实现对网页中超链接的拦截;返回值为boolean型,是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器。默认false
所以,我们可能在有的博文中看到不去重写该方法也可以解决ERR_UNKNOWN_URL_SCHEME这个错误。
这里我们讲下重写shouldOverrideUrlLoading来解决。
webView.setWebViewClient(new WebViewClient() {
@Override
public 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
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
————————————————
版权声明:本文为CSDN博主「Glide風」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
修复的类库呢? 路过看看。。。。。。。。。。。。。。。。。。。。。 老子看完一脸懵逼 进来看看了解一下 443083227 发表于 2019-11-21 09:53
老子看完一脸懵逼
{:4_89:}无非就是非http s尝试跳转啊 chengwei5714869 发表于 2019-11-20 10:39
修复的类库呢?
驱动哇DWQ 单位啊WA的哇DWQDWQD 板凳,鉴定完毕。。。。。。。。。。。。。。 看过了,没搞懂,尴尬 易如意中文编程学习交流论坛有你更精彩~
页:
[1]
2