记得有这么一天,由于项目中有支付流程,native接了H5,需要跳转至微信和支付宝支付,并且由原生Webview承载。
有天晚上突然测试提了个问题:
有两个小米手机,系统版本6.0.1,MIUI版本未知,打开微信支付的时候报了个
出现net::ERR_UNKNOWN_URL_SCHEME,并且说其他手机都没有问题。
好嘛,慌了,立马把所有Android 开发拉了个群 ,然后开始各种猜测:
1.前端给的链接不对,不支持跳转
2.小米机型经过深度定制,有可能是webView的兼容性问题
3.schema不支持跳转。
好了 赶紧排查问题。
1.发现我们的跳转是
WebViewClient webViewClient =newWebViewClient() {
@Override
public
boolean
shouldOverrideUrlLoading(WebView wv, String url){
if(url ==null)
returnfalse;
try{
if(url.startsWith("weixin://") || url.startsWith("alipays://") || url.startsWith("mailto://") || url.startsWith("tel://")//其他自定义的scheme) {
Intent intent =newIntent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent);
returntrue; }
}catch(Exception e)
{//防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)returnfalse;
}//处理http和https开头的url
wv.loadUrl(url);
returntrue; }};
很完美呀。但是为什么会出现这个呢 ,难道真的是MIUI经过深度定制,于是又拿了一个小米手机 发现没有问题了 没有问题了!一头雾水!
然后准备debug 代码,但是发现小米的debug 包不能安装,需要登录小米账号密码什么的,打release包又不能断点调试好烦!
于是就拿自己的测试机(vivo)去支付莫名其妙也出现了 同样的错误,这就证明了跟机型无关!
那么问题来了到底是什么问题,哈哈 结果来了 你的手机没装微信!没错,就是没装微信!微信是没有网页支付的,所有打不开喽!
哈哈 解决方案:
1.判断有没有安装微信,没有则不显示微信支付入口
2.唤起微信支付时判断有没有微信,没有则提示安装下载