Android开发必不可少的就是和H5做交互,其中出现问题比较多的就是上传图片、支付的交互;
之前使用腾讯x5的第三方,在打包后经常出现无法正常返回图片,H5展示不了图片;
百度谷歌很多都是在适配不同的系统,来解决这个问题,但是部门机型还是不能解决;
使用AgentWeb后,基本都能够实现,除了第一次选择文件夹会不知道在哪里,其他暂时没发现什么问题;
AgentWeb支持androidx和android,可以根据不同项目进行引用;
AgentWeb:git地址
需要注意的点:
1、方法替换
public boolean shouldOverrideUrlLoading(WebView webView, String url)已经弃用;
替换方法->
public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request)
对应url可以通过以下调用:
String url=request.getUrl().toString();
2、微信支付遇到的问题
在H5支付唤起APP时,提示:商家存在未配置的参数,请联系商家解决;
需要设置Referer:
示例代码:
public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request) {
String url = request.getUrl().toString();
if (url.startsWith(StringConfig.WEIXIN)) {
payType =PAY_WECHAT;
gotoActionApp(url);
return true;
}else if (url.contains(StringConfig.WEIXIN_PAY)) {
Map extraHeaders =new HashMap();
if (page ==1) {
//不同界面有可能需要设置的referer不一样,根据自己的情况来做判断
//xxx是对应的referer url;
extraHeaders.put(StringConfig.REFERER, xxxx);
}else {
extraHeaders.put(StringConfig.REFERER, xxx);
}
webView.loadUrl(url, extraHeaders);
return true;
}else if (url.startsWith(StringConfig.ALI_PAY)) {
payType =PAY_ALIPAY;
gotoActionApp(url);
return true;
}else {
return false;
}
}
private void gotoActionApp(String url) {
try {
//打开本地App进行支付
Intent intent =new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}catch (ActivityNotFoundException e) {
}
}
public static final StringWEIXIN ="weixin://";
public static final StringWEIXIN_PAY ="wx.tenpay";
public static final StringALI_PAY ="alipays://";
public static final StringREFERER ="Referer";
AgentWeb具体API需要到git上看,以上纯属个人学习经验。