1 mWebView.setWebViewClient(new WebViewClient() {
2 String referer = "商户申请H5时提交的授权域名";
3
4 //覆盖shouldOverrideUrlLoading 方法
5 @Override
6 public boolean shouldOverrideUrlLoading(WebView view, String url) {
7 LogUtils.e(TAG, "url = " + url);
8 if (!url.startsWith("http")) {
9 if (url.startsWith("协议") && !hasInstalledApp) { // 特殊app,根据协议判断客户端是否存在
10 return true;
11 }
12 try {
13 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
14 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
15 startActivity(intent);
16 if (url.startsWith("协议")){ // 根据实际逻辑,外呼app成功之后,看是否需要关闭界面
17 finish();
18 }
19 return true;
20 } catch (Exception e) { //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)
21 return false;
22 }
23 }
24 Map extraHeaders = new HashMap();
25 extraHeaders.put("Referer", referer);
26 view.loadUrl(url, extraHeaders);
27 referer = url;
28 return true;//不调用系统的浏览器打开网页
29 }
30 });
31 mWebView.setWebChromeClient(new WebChromeClient());
32 mWebView.loadUrl(mUrl);
33 }
34
35 扩展版代码
36
37 扩展版代码