【Android】WebView拦截h5的Url并跳转native

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)
 }

错误不足之处或相关建议欢迎大家评论指出,谢谢!如果觉得内容可以的话麻烦喜欢(♥)一下

你可能感兴趣的:(【Android】WebView拦截h5的Url并跳转native)