diff --git a/qmuidemo/src/main/assets/demo.html b/qmuidemo/src/main/assets/demo.html index b51c51cd..446b9377 100644 --- a/qmuidemo/src/main/assets/demo.html +++ b/qmuidemo/src/main/assets/demo.html @@ -12,6 +12,11 @@
+ +
+ scheme 跳转新界面 +
+
diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDTabSegmentScrollableModeFragment.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDTabSegmentScrollableModeFragment.java index b20cf1ad..44e9004f 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDTabSegmentScrollableModeFragment.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDTabSegmentScrollableModeFragment.java @@ -124,7 +124,8 @@ public class QDTabSegmentScrollableModeFragment extends BaseFragment { Bundle args = getArguments(); if(args != null){ int mode = args.getInt("mode"); - Toast.makeText(getContext(), "mode = " + mode, Toast.LENGTH_SHORT).show(); + String name = args.getString("name"); + Toast.makeText(getContext(), "mode = " + mode + "; name = " + name, Toast.LENGTH_SHORT).show(); } } } diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/lab/QDWebViewBridgeFragment.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/lab/QDWebViewBridgeFragment.java index 924534ac..2faa9964 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/lab/QDWebViewBridgeFragment.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/lab/QDWebViewBridgeFragment.java @@ -16,9 +16,12 @@ package com.qmuiteam.qmuidemo.fragment.lab; +import android.annotation.TargetApi; import android.os.Bundle; import android.view.View; import android.webkit.WebChromeClient; +import android.webkit.WebResourceRequest; +import android.webkit.WebView; import android.widget.Toast; import com.qmuiteam.qmui.skin.QMUISkinManager; @@ -34,6 +37,7 @@ import com.qmuiteam.qmuidemo.R; import com.qmuiteam.qmuidemo.fragment.QDWebExplorerFragment; import com.qmuiteam.qmuidemo.lib.Group; import com.qmuiteam.qmuidemo.lib.annotation.Widget; +import com.qmuiteam.qmuidemo.manager.QDSchemeManager; import org.json.JSONException; import org.json.JSONObject; @@ -93,25 +97,42 @@ public class QDWebViewBridgeFragment extends QDWebExplorerFragment { @Override protected QMUIWebViewClient getWebViewClient() { - return new QMUIBridgeWebViewClient(needDispatchSafeAreaInset(), false, - new QMUIWebViewBridgeHandler(mWebView) { - @Override - protected JSONObject handleMessage(String message) { - try { - JSONObject json = new JSONObject(message); - String id = json.getString("id"); - String info = json.getString("info"); - Toast.makeText(getContext(), "id = " + id + "; info = " + info, Toast.LENGTH_SHORT).show(); - JSONObject result = new JSONObject(); - result.put("code", 100); - result.put("message", "Native 的执行结果"); - return result; - } catch (JSONException e) { - e.printStackTrace(); - } - return null; - } - }); + QMUIWebViewBridgeHandler handler = new QMUIWebViewBridgeHandler(mWebView) { + @Override + protected JSONObject handleMessage(String message) { + try { + JSONObject json = new JSONObject(message); + String id = json.getString("id"); + String info = json.getString("info"); + Toast.makeText(getContext(), "id = " + id + "; info = " + info, Toast.LENGTH_SHORT).show(); + JSONObject result = new JSONObject(); + result.put("code", 100); + result.put("message", "Native 的执行结果"); + return result; + } catch (JSONException e) { + e.printStackTrace(); + } + return null; + } + }; + return new QMUIBridgeWebViewClient(needDispatchSafeAreaInset(), false, handler){ + @Override + @TargetApi(21) + protected boolean onShouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + if(QDSchemeManager.getInstance().handle(request.getUrl().toString())){ + return true; + } + return super.onShouldOverrideUrlLoading(view, request); + } + + @Override + protected boolean onShouldOverrideUrlLoading(WebView view, String url) { + if(QDSchemeManager.getInstance().handle(url)){ + return true; + } + return super.onShouldOverrideUrlLoading(view, url); + } + }; } @Override