From 102d5e23d14ca0be4023a14341d900774f1a04c2 Mon Sep 17 00:00:00 2001 From: jackjintai Date: Fri, 4 Sep 2020 15:04:38 +0800 Subject: [PATCH] =?UTF-8?q?android:=E6=96=B0=E5=A2=9Etencent=20x5=20WebVie?= =?UTF-8?q?w=E7=9A=84=20=E7=BD=91=E7=BB=9C=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../doraemondemo/WebViewNormalActivity.kt | 15 ++++++++++++--- .../didichuxing/doraemondemo/WebViewX5Activity.kt | 15 +++++++++++---- .../doraemonkit/kit/h5_help/DokitWebViewClient.kt | 15 ++++++++++++--- .../kit/h5_help/DokitX5WebViewClient.kt | 14 +++++++++++--- 4 files changed, 46 insertions(+), 13 deletions(-) diff --git a/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewNormalActivity.kt b/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewNormalActivity.kt index 58357d7f..c9678c31 100644 --- a/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewNormalActivity.kt +++ b/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewNormalActivity.kt @@ -12,18 +12,19 @@ import androidx.appcompat.app.AppCompatActivity */ class WebViewNormalActivity : AppCompatActivity() { val TAG = "WebViewActivity" + lateinit var mWebView: WebView // val url = "file:///android_asset/dokit_index.html" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_normal_webview) - val webView = findViewById(R.id.normal_web_view) - initWebView(webView) + mWebView = findViewById(R.id.normal_web_view) + initWebView(mWebView) // webView.loadUrl("https://page-daily.kuaidadi.com/m/ddPage_0sTyVhyq.html") // WebViewHook.inject(webView) //webView.loadUrl(url) // webView.loadUrl("file:///android_asset/dokit_index.html") - webView.loadUrl("https://www.dokit.cn") + mWebView.loadUrl("https://www.dokit.cn") // webView.loadUrl("http://xingyun.xiaojukeji.com/docs/dokit/#/intro") } @@ -85,4 +86,12 @@ class WebViewNormalActivity : AppCompatActivity() { } + override fun onBackPressed() { + if (mWebView.canGoBack()) { + mWebView.goBack() + } else { + super.onBackPressed() + } + } + } \ No newline at end of file diff --git a/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewX5Activity.kt b/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewX5Activity.kt index b4587012..419e8887 100644 --- a/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewX5Activity.kt +++ b/Android/java/app/src/main/java/com/didichuxing/doraemondemo/WebViewX5Activity.kt @@ -18,18 +18,19 @@ import com.tencent.smtt.sdk.WebViewClient */ class WebViewX5Activity : AppCompatActivity() { val TAG = "WebViewActivity" + lateinit var mWebView: WebView // val url = "file:///android_asset/dokit_index.html" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_x5_webview) - val webView = findViewById(R.id.x5_web_view) - initWebView(webView) + mWebView = findViewById(R.id.x5_web_view) + initWebView(mWebView) // webView.loadUrl("https://page-daily.kuaidadi.com/m/ddPage_0sTyVhyq.html") // WebViewHook.inject(webView) //webView.loadUrl(url) // webView.loadUrl("file:///android_asset/dokit_index.html") - webView.loadUrl("https://www.dokit.cn") + mWebView.loadUrl("https://www.dokit.cn") // webView.loadUrl("http://xingyun.xiaojukeji.com/docs/dokit/#/intro") } @@ -87,5 +88,11 @@ class WebViewX5Activity : AppCompatActivity() { } } - + override fun onBackPressed() { + if (mWebView.canGoBack()) { + mWebView.goBack() + } else { + super.onBackPressed() + } + } } \ No newline at end of file diff --git a/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitWebViewClient.kt b/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitWebViewClient.kt index b701df66..a1355677 100644 --- a/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitWebViewClient.kt +++ b/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitWebViewClient.kt @@ -136,7 +136,7 @@ class DokitWebViewClient(webViewClient: WebViewClient?) : WebViewClient() { } // web 数据mock - return dealMock(requestBean, url) + return dealMock(requestBean, url,view,request) } } else { @@ -152,9 +152,12 @@ class DokitWebViewClient(webViewClient: WebViewClient?) : WebViewClient() { /** * 处理数据mock的相关逻辑 */ + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) private fun dealMock( requestBean: JsRequestBean, - url: HttpUrl? + url: HttpUrl?, + view: WebView?, + request: WebResourceRequest? ): WebResourceResponse? { url?.let { httpUrl -> try { @@ -184,6 +187,12 @@ class DokitWebViewClient(webViewClient: WebViewClient?) : WebViewClient() { DokitDbManager.MOCK_API_TEMPLATE, DokitDbManager.FROM_SDK_OTHER ) + + //如果interceptMatchedId和templateMatchedId都为null 直接不进行操作 + if (interceptMatchedId.isNullOrBlank() && templateMatchedId.isNullOrBlank()) { + return super.shouldInterceptRequest(view, request) + } + val newRequest: Request = JsHttpUtil.createOkHttpRequest(requestBean) //发送模拟请求 @@ -217,7 +226,7 @@ class DokitWebViewClient(webViewClient: WebViewClient?) : WebViewClient() { } JsHookDataManager.jsRequestMap.remove(requestBean.requestId) - return null + return super.shouldInterceptRequest(view, request) } diff --git a/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitX5WebViewClient.kt b/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitX5WebViewClient.kt index 5be29292..e874bf16 100644 --- a/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitX5WebViewClient.kt +++ b/Android/java/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/h5_help/DokitX5WebViewClient.kt @@ -137,7 +137,7 @@ class DokitX5WebViewClient(webViewClient: WebViewClient?) : WebViewClient() { } // web 数据mock - return dealMock(requestBean, url) + return dealMock(requestBean, url, view, request) } } else { @@ -155,7 +155,9 @@ class DokitX5WebViewClient(webViewClient: WebViewClient?) : WebViewClient() { */ private fun dealMock( requestBean: JsRequestBean, - url: HttpUrl? + url: HttpUrl?, + view: WebView?, + request: WebResourceRequest? ): WebResourceResponse? { url?.let { httpUrl -> try { @@ -185,6 +187,12 @@ class DokitX5WebViewClient(webViewClient: WebViewClient?) : WebViewClient() { DokitDbManager.MOCK_API_TEMPLATE, DokitDbManager.FROM_SDK_OTHER ) + + //如果interceptMatchedId和templateMatchedId都为null 直接不进行操作 + if (interceptMatchedId.isNullOrBlank() && templateMatchedId.isNullOrBlank()) { + return super.shouldInterceptRequest(view, request) + } + val newRequest: Request = JsHttpUtil.createOkHttpRequest(requestBean) //发送模拟请求 @@ -218,7 +226,7 @@ class DokitX5WebViewClient(webViewClient: WebViewClient?) : WebViewClient() { } JsHookDataManager.jsRequestMap.remove(requestBean.requestId) - return null + return super.shouldInterceptRequest(view, request) } -- GitLab