谷歌官方issue
https://issuetracker.google.com/issues/36997941
最近在做微信H5支付的時候出現問題,雲測TOP100,在Android 4.4.2 Android4.4.4調用微信支付的時候出現吊不起的情況,顯示提示
“提示商家參數格式有誤”
HashMap<String, String> map = new HashMap<>();
map.put("Referer", referer);
this.loadUrl(url,map);
使用的是如上代碼使用loadUrl方法,排查了一天,解決方法:
if (isKitKat()) {
this.loadDataWithBaseURL(referer,
"<script>window.location.href=\"" + url + "\";</script>",
"text/html", "utf-8", null);
} else {
this.loadUrl(url,map);
}
但是需要在shouldOverrideUrlLoading中return false,否則可能顯示空白頁或者無限循環加載。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
LogUtil.i("shouldOverrideUrlLoading,url=" + url);
if (url.startsWith("weixin://wap/pay?")) {
LogUtil.i("startsWith=" + url);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
// UtilsManager.getContext().startActivity(intent);
mContext.startActivity(intent);
// ((Activity)mContext).finish();
return true;
} else {
if (isKitKat()) {
//兼容這兩個版本設置referer無效的問題
return false;
} else {
view.loadUrl(url, map);
LogUtil.i("loadUrl=" + url);
}
}
return true;
}