提交 102d5e23 编写于 作者: J jackjintai

android:新增tencent x5 WebView的 网络拦截

上级 d07ceb32
......@@ -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<WebView>(R.id.normal_web_view)
initWebView(webView)
mWebView = findViewById<WebView>(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
......@@ -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<WebView>(R.id.x5_web_view)
initWebView(webView)
mWebView = findViewById<WebView>(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
......@@ -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)
}
......
......@@ -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)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册