WebView拦截H5的Url,跳转到native(需求:h5中所有的去支付调起native的支付页)
需要通过WebView自定义的WebViewClient,复写shouldOverrideUrlLoading(WebView view, String url)方法:
1、
mWebView.setWebViewClient(mWebViewClient);
2、复写方法:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(ActivityRedirectManager.hasNative(url)) {
ActivityRedirectManager.redirect(getActivity(), url);//跳转到native
} else {
view.loadUrl(url);//调用webview本身的loadUrl方法
}
return true;
}
3、
/**
* 跳转操作
* @param context
* @param url
*/
public static void redirect(Context context, String url) {
// 去空格,运营有时候会把空格配进来
url = url.trim();
if(url.startsWith(URLConStant.URL_PAY)) {
Uri uri = getParamsByUrl(url);
if(uri == null) {
return;
}
String orderId = uri.getQueryParameter("order_id");
String amount = uri.getQueryParameter("amount");
if(TextUtils.isEmpty(orderId)) {
// return;
}
if(TextUtils.isEmpty(amount)) {
// return;
}
OrderSuccessActivity.start(context, orderId, amount);
} // end 支付页
}
4、
/**
* 通过url判断是否有native页
* @param url
* @return
*/
public static boolean hasNative(String url) {
if(TextUtils.isEmpty(url)) {
return false;
}
url = url.trim();
return url.startsWith(URLConStant.URL_PAY)
}
错误不足之处或相关建议欢迎大家评论指出,谢谢!如果觉得内容可以的话麻烦喜欢(♥)一下