瀏覽代碼

修改启动页路由跳转

Pq 3 年之前
父節點
當前提交
f75305ae4f

+ 12 - 0
BaseLibrary/src/main/java/com/cooleshow/base/bean/RouteBean.java

@@ -0,0 +1,12 @@
+package com.cooleshow.base.bean;
+
+/**
+ * Author by pq, Date on 2022/6/29.
+ */
+public class RouteBean {
+    public String action;//app或者H5
+    public String pageTag;//页面标识
+    public String url;//H5连接地址
+    public String params;//参数
+
+}

+ 8 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/RouteConstants.java

@@ -0,0 +1,8 @@
+package com.cooleshow.base.constanst;
+
+/**
+ * Author by pq, Date on 2022/6/29.
+ * 路由跳转原生页面标记集合
+ */
+public class RouteConstants {
+}

+ 39 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/JumpUtils.java

@@ -0,0 +1,39 @@
+package com.cooleshow.base.utils;
+
+import android.text.TextUtils;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.bean.RouteBean;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
+
+/**
+ * Author by pq, Date on 2022/6/29.
+ */
+public class JumpUtils {
+    public static final String ACTION_H5 = "h5";
+    public static final String ACTION_APP = "app";
+
+    public static boolean jump(RouteBean routeBean) {
+        if (routeBean == null) {
+            return false;
+        }
+        String action = routeBean.action;
+
+        if (TextUtils.equals(action, ACTION_APP)) {
+            //跳转原生页面
+        } else {
+            //跳转H5页面
+            if (TextUtils.isEmpty(routeBean.url)) {
+                return false;
+            }
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, routeBean.url)
+                    .navigation();
+            return true;
+        }
+        return false;
+    }
+
+}

+ 13 - 11
student/src/main/java/com/cooleshow/student/ui/splash/SplashActivity.kt

@@ -2,12 +2,15 @@ package com.cooleshow.student.ui.splash
 
 import android.net.Uri
 import android.os.Bundle
+import android.text.TextUtils
 import android.util.Log
 import com.alibaba.android.arouter.launcher.ARouter
+import com.cooleshow.base.bean.RouteBean
 import com.cooleshow.base.common.ConstantKey
-import com.cooleshow.base.common.WebConstants
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.activity.BaseActivity
+import com.cooleshow.base.utils.GsonUtils
+import com.cooleshow.base.utils.JumpUtils
 import com.cooleshow.base.utils.SPUtils
 import com.cooleshow.student.databinding.ActivitySplashLayoutBinding
 import com.cooleshow.usercenter.constants.UserConstants
@@ -30,7 +33,7 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
     }
 
     override fun initView() {
-        Log.e("asdfasdfadsf", "initView: " )
+        Log.e("asdfasdfadsf", "initView: ")
     }
 
     override fun initData() {
@@ -40,16 +43,15 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
             if (UserHelper.isLogin()) {
                 //接收h5跳转意图
                 val uri: Uri? = intent.data
-                if (uri != null) {
-                    val url: String = uri.getQueryParameter("url").toString()
-                    //接收值做具体操作
-                    ARouter.getInstance()
-                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                        .withString(WebConstants.WEB_URL, url)
-                        .navigation()
-                    return
+                if (uri != null && uri.isHierarchical) {
+                    val params: String = uri.getQueryParameter("url").toString()
+                    if (!TextUtils.isEmpty(params)) {
+                        val routeBean = GsonUtils.fromJson(params, RouteBean::class.java)
+                        if (JumpUtils.jump(routeBean)) {
+                            return
+                        }
+                    }
                 }
-
                 jumpMain()
             } else {
                 jumpLogin()

+ 14 - 10
teacher/src/main/java/com/cooleshow/teacher/ui/splash/SplashActivity.kt

@@ -1,11 +1,15 @@
 package com.cooleshow.teacher.ui.splash
 
 import android.net.Uri
+import android.text.TextUtils
 import com.alibaba.android.arouter.launcher.ARouter
+import com.cooleshow.base.bean.RouteBean
 import com.cooleshow.base.common.ConstantKey
 import com.cooleshow.base.common.WebConstants
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.activity.BaseActivity
+import com.cooleshow.base.utils.GsonUtils
+import com.cooleshow.base.utils.JumpUtils
 import com.cooleshow.base.utils.SPUtils
 import com.cooleshow.teacher.databinding.ActivitySplashLayoutBinding
 import com.cooleshow.usercenter.constants.UserConstants
@@ -28,24 +32,24 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
     override fun initData() {
         super.initData()
         val isFirstLaunch = SPUtils.getInstance().getBoolean(ConstantKey.IS_FIRST_LAUNCH, false)
-        if (isFirstLaunch){
+        if (isFirstLaunch) {
             if (UserHelper.isLogin()) {
                 //接收h5跳转意图
                 val uri: Uri? = intent.data
-                if (uri != null) {
-                    val url: String = uri.getQueryParameter("url").toString()
-                    //接收值做具体操作
-                    ARouter.getInstance()
-                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                        .withString(WebConstants.WEB_URL, url)
-                        .navigation()
-                    return
+                if (uri != null && uri.isHierarchical) {
+                    val params: String = uri.getQueryParameter("url").toString()
+                    if (!TextUtils.isEmpty(params)) {
+                        val routeBean = GsonUtils.fromJson(params, RouteBean::class.java)
+                        if (JumpUtils.jump(routeBean)) {
+                            return
+                        }
+                    }
                 }
                 jumpMain()
             } else {
                 jumpLogin()
             }
-        }else{
+        } else {
             goGuide();
         }