项目中使用webview加载html,html中包含了支付模块,结果无法调起支付,于是百度了下解决方案。
问题原因如下:
支付宝调起支付会返回alipays://开头的一串意图
微信会调起支付返回 weixin://开头的一串意图
这在webview中无法正常触发意图。
解决方案如下:
自定义WebViewClient
重写以下方法
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("http:")&&!url.toLowerCase().contains(".apk") || url.startsWith("https:")&&!url.toLowerCase().contains(".apk")) {//这里只针对了apk的情况,其它文档类下载也可以自行增加判断。 //符合上诉判断的则在webview中加载 return false; } try { //不是以http或者https开头或者是以.apk结尾的url则使用手机浏览器打开。 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } //默认不在webview中加载 return true; }
问题解决