Browse Source

1.修改和h5交互方法

王鹏鹏 2 years ago
parent
commit
4d57ded2a4

+ 27 - 0
baselib/src/main/java/com/yingyangfly/baselib/utils/LiveEventBusUtil.kt

@@ -0,0 +1,27 @@
+package com.yingyangfly.baselib.utils
+
+import androidx.lifecycle.LifecycleOwner
+import com.jeremyliao.liveeventbus.LiveEventBus
+
+/**
+ * @author wangsai
+ * @date 2022/9/21 19:42
+ * @description LiveEventbus封装
+ */
+object LiveEventBusUtil {
+
+    inline fun <reified T:Any> send(key: String, value: T?) {
+        LiveEventBus.get(key, T::class.java).post(value)
+    }
+
+    inline fun <reified T> observer(owner: LifecycleOwner, key: String, crossinline callback: (T) -> Unit) {
+        LiveEventBus.get(key, T::class.java).observe(owner) {
+            callback.invoke(it)
+        }
+    }
+
+     fun   sendSimple(key: String, value: String?) {
+        LiveEventBus.get(key,String::class.java).post(value)
+    }
+
+}

+ 5 - 2
baselib/src/main/java/com/yingyangfly/baselib/utils/RxBusCodes.kt

@@ -2,10 +2,13 @@ package com.yingyangfly.baselib.utils
 
 object RxBusCodes {
 
+    //关闭webview页面
+    const val FINISHWEBVIEW = "finishWebview"
+
     //获取数据监控
-    const val GetDataMonitor = 9000
+    const val GetDataMonitor = 9001
 
     //获取训练内容
-    const val GetTrainContent = 9001
+    const val GetTrainContent = 9002
 
 }

+ 8 - 11
webview/src/main/java/com/yingyangfly/webview/AndroidToJs.kt

@@ -3,6 +3,8 @@ package com.yingyangfly.webview
 import android.app.Activity
 import android.webkit.JavascriptInterface
 import com.yingyangfly.baselib.ext.logi
+import com.yingyangfly.baselib.utils.LiveEventBusUtil
+import com.yingyangfly.baselib.utils.RxBusCodes
 
 /**
  * @author gold
@@ -14,16 +16,11 @@ class AndroidToJs(val context: Activity) : Any() {
     // 被JS调用的方法必须加入@JavascriptInterface注解
     @JavascriptInterface
     fun performAndroidMethod(msg: String?) {
-        "js回调给原生的参数:$msg".logi()
-//        if (msg?.contains("403") == true) {
-//
-//        }
-//        if (msg?.contains("back") == true) {
-//           context.finish()
-//        }
-//        if (msg?.contains("list") == true) {
-//
-//        }
-
+        if(msg.isNullOrEmpty().not()) {
+            "js回调给原生的参数:$msg".logi()
+            if (msg?.equals("finishActivity") == true) {
+                LiveEventBusUtil.send(RxBusCodes.FINISHWEBVIEW, "finishWebview")
+            }
+        }
     }
 }

+ 9 - 2
webview/src/main/java/com/yingyangfly/webview/BridgeWebActivity.kt

@@ -12,9 +12,9 @@ import android.webkit.WebViewClient
 import androidx.appcompat.app.AppCompatActivity
 import androidx.databinding.DataBindingUtil
 import com.alibaba.android.arouter.facade.annotation.Route
-import com.github.lzyzsd.jsbridge.BridgeHandler
-import com.github.lzyzsd.jsbridge.CallBackFunction
 import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.baselib.utils.LiveEventBusUtil
+import com.yingyangfly.baselib.utils.RxBusCodes
 import com.yingyangfly.baselib.utils.ViewTool
 import com.yingyangfly.webview.databinding.ActivityBridgeWebBinding
 
@@ -34,6 +34,7 @@ class BridgeWebActivity : AppCompatActivity() {
         binding = DataBindingUtil.setContentView(this, R.layout.activity_bridge_web)
         ViewTool.inflateLayoutPixels(this, binding.root, 1194, 834)
         initWebView()
+        initView()
     }
 
     @SuppressLint("JavascriptInterface", "SetJavaScriptEnabled")
@@ -80,6 +81,12 @@ class BridgeWebActivity : AppCompatActivity() {
         binding.webView.loadUrl(url)
     }
 
+    private fun initView() {
+        LiveEventBusUtil.observer<String>(this, RxBusCodes.FINISHWEBVIEW) {
+            finish()
+        }
+    }
+
     override fun onDestroy() {
         destoryWebView()
         super.onDestroy()