Android开发之WebView加载自定义scheme报错net::ERR_UNKNOWN_URL_SCHEME(附带源码标题下面可点击下载)

在Android 6.0及以上版本,加载含有自定义scheme的JavaScript代码时,会报net::ERR_UNKNOWN_URL_SCHEME错误。本文通过分析问题原因,提出两种解决办法:使用外部浏览器打开或在shouldOverrideUrlLoading方法中拦截处理。推荐使用后者,通过重写shouldOverrideUrlLoading方法,确保自定义scheme和JS事件能正常加载和点击。
摘要由CSDN通过智能技术生成

咱们先看下报错结果图:

我这边是华为荣耀7i手机才出现这个情况,总结得出结论android6.0以上加载自定义scheme会报错如下,6.0以下貌似不会

三星和模拟器没有可以直接加载这个url

,网页出来后才出现这个错误页面,原因是加载的这个url内部有JavaScript代码里面包含自定义scheme代码导致加载这个JavaScript代码里面的自定义scheme的时候就报错无法加载。

下面的加载的url地址:

https://www.yunzhijia.com/pubacc/public/data/19/06/26/ewsqZbAD.html?p=XT-1088eb69-d338-4779-9298-77d89b8be806&f=ewsqZbAD&success=false&errorMsg=

看下报错日志:

[INFO:CONSOLE(62)] "Mixed Content: 
The page at 'https://www.yunzhijia.com/pubacc/public/data/19/06/26/ewsqZbAD.html?p=XT-1088eb69-d338-4779-9298-77d89b8be806&f=ewsqZbAD&success=false&errorMsg=' 
was loaded over HTTPS, but requested an insecure resource 'xuntong:getPersonInfo:1:%7B%7D'. 
This content should also be served over HTTPS.", source: https://do.yunzhijia.com/pub/js/qingjs.js (62)

看最后一句https://do.yunzhijia.com/pub/js/qingjs.js这是无法加载的JavaScript源码:

 

我先说下我这边情况,我这边加载的https网址,但是https网址里面携带有自定义的scheme属性JavaScript文件,android中默认加载http和https协议,其他自定义协议规定为不安全默认不让加载。咱们可以看下webview的报错提示:

chromium: [INFO:CONSOLE(1)] "Mixed Content: The page at 'https://www.yunzhijia.com/pubacc/public/data/19/06/26/ewsqZbAD.html?p=XT-1088eb69-d338-4779-9298-77d89b8be806&f=ewsqZbAD&success=false&errorMsg=' was loaded over HTTPS, but requested an insecure image 'http://do.yunzhijia.com/microblog/filesvr/5d13288c90144e08bfcd6496'. This content should also be served over HTTPS.", source: https://www.yunzhijia.com/pubacc/public/data/19/06/26/ewsqZbAD.html?p=XT-1088eb69-d338-4779-9298-77d89b8be806&f=ewsqZbAD&success=false&errorMsg= (1)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值