瀏覽代碼

修复启动APP跳转问题

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

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/Constants.java

@@ -13,6 +13,7 @@ public class Constants {
     public static final int DEFAULT_DATA_SIZE = 10;//加载更多默认一页请求数据
     public static final String WHITE_BOARD_ORIENTATION = "WHITE_BOARD_ORIENTATION";
     public static String HEADSET_PLUE_TAG = "";
+    public static String COMMON_EXTRA_KEY = "memo";
 
     public static final int PAY_SUCCESS =1;//支付成功
     public static final int PAY_ERROR_BY_NOT_INSTALL =2;//支付失败,未安装

+ 31 - 25
student/src/main/java/com/cooleshow/student/ui/splash/SplashActivity.kt

@@ -8,10 +8,12 @@ import android.text.TextPaint
 import android.text.TextUtils
 import android.text.style.ClickableSpan
 import android.view.View
+import com.alibaba.android.arouter.facade.Postcard
 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.constanst.Constants
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.activity.BaseActivity
 import com.cooleshow.base.utils.*
@@ -129,28 +131,25 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
     private fun goIntent() {
         val isFirstLaunch = SPUtils.getInstance().getBoolean(ConstantKey.IS_FIRST_LAUNCH, false)
         if (isFirstLaunch) {
-            if (UserHelper.isLogin()) {
-                //接收h5跳转意图
-                val uri: Uri? = intent.data
-                if (uri != null && uri.isHierarchical) {
-                    LogUtils.i("splash", "uri params:${uri.toString()}")
-                    var params: String = uri.getQueryParameter("url").toString()
-                    if (!TextUtils.isEmpty(params)) {
-                        try {
-                            params= URLDecoder.decode(params, "UTF-8")
-                            LogUtils.i("splash", "h5 params:$params")
-                            val routeBean = GsonUtils.fromJson(params, RouteBean::class.java)
-                            if (JumpUtils.jump(routeBean)) {
-                                return
-                            }
-                        } catch (e: Exception) {
-                            e.printStackTrace()
-                        }
+            val uri: Uri? = intent.data
+            var params: String = ""
+            if (uri != null && uri.isHierarchical) {
+                LogUtils.i("splash", "uri params:${uri.toString()}")
+                params = uri.getQueryParameter("url").toString()
+                if (!TextUtils.isEmpty(params)) {
+                    try {
+                        params = URLDecoder.decode(params, "UTF-8")
+                        LogUtils.i("splash", "h5 params:$params")
+                    } catch (e: Exception) {
+                        e.printStackTrace()
                     }
                 }
-                jumpMain()
+            }
+            if (UserHelper.isLogin()) {
+                //接收h5跳转意图
+                jumpMain(params)
             } else {
-                jumpLogin()
+                jumpLogin(params)
             }
         } else {
             goGuide();
@@ -163,14 +162,21 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
         ARouter.getInstance().build(RouterPath.SplashCenter.SPLASH_GUIDE).navigation()
     }
 
-    private fun jumpMain() {
-        ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation()
+    private fun jumpMain(extra: String) {
+        var build: Postcard = ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME)
+        if (extra.isNotEmpty()) {
+            build.withString(Constants.COMMON_EXTRA_KEY, extra)
+        }
+        build.navigation()
     }
 
-    private fun jumpLogin() {
-        ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
-            .withInt(UserConstants.LOGIN_ITEM, VerifyCodeLoginActivity.STUDENT_ITEM)
-            .navigation()
+    private fun jumpLogin(extra: String) {
+        var build: Postcard = ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
+        build.withInt(UserConstants.LOGIN_ITEM, VerifyCodeLoginActivity.STUDENT_ITEM)
+        if (extra.isNotEmpty()) {
+            build.withString(Constants.COMMON_EXTRA_KEY, extra)
+        }
+        build.navigation()
     }
 
 }

+ 32 - 25
teacher/src/main/java/com/cooleshow/teacher/ui/splash/SplashActivity.kt

@@ -9,11 +9,13 @@ import android.text.style.ClickableSpan
 import android.view.View
 import cn.jiguang.api.utils.JCollectionAuth
 import cn.jpush.android.api.JPushInterface
+import com.alibaba.android.arouter.facade.Postcard
 import com.alibaba.android.arouter.launcher.ARouter
 import com.cooleshow.base.bean.RouteBean
 import com.cooleshow.base.common.BaseApplication
 import com.cooleshow.base.common.ConstantKey
 import com.cooleshow.base.common.WebConstants
+import com.cooleshow.base.constanst.Constants
 import com.cooleshow.base.router.RouterPath
 import com.cooleshow.base.ui.activity.BaseActivity
 import com.cooleshow.base.utils.*
@@ -125,28 +127,25 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
     private fun goIntent() {
         val isFirstLaunch = SPUtils.getInstance().getBoolean(ConstantKey.IS_FIRST_LAUNCH, false)
         if (isFirstLaunch) {
-            if (UserHelper.isLogin()) {
-                //接收h5跳转意图
-                val uri: Uri? = intent.data
-                if (uri != null && uri.isHierarchical) {
-                    LogUtils.i("splash", "uri params:${uri.toString()}")
-                    var params: String = uri.getQueryParameter("url").toString()
-                    if (!TextUtils.isEmpty(params)) {
-                        try {
-                            params= URLDecoder.decode(params, "UTF-8")
-                            LogUtils.i("splash", "h5 params:$params")
-                            val routeBean = GsonUtils.fromJson(params, RouteBean::class.java)
-                            if (JumpUtils.jump(routeBean)) {
-                                return
-                            }
-                        } catch (e: Exception) {
-                            e.printStackTrace()
-                        }
+            val uri: Uri? = intent.data
+            var params: String = ""
+            if (uri != null && uri.isHierarchical) {
+                LogUtils.i("splash", "uri params:${uri.toString()}")
+                params = uri.getQueryParameter("url").toString()
+                if (!TextUtils.isEmpty(params)) {
+                    try {
+                        params = URLDecoder.decode(params, "UTF-8")
+                        LogUtils.i("splash", "h5 params:$params")
+                    } catch (e: Exception) {
+                        e.printStackTrace()
                     }
                 }
-                jumpMain()
+            }
+            if (UserHelper.isLogin()) {
+                //接收h5跳转意图
+                jumpMain(params)
             } else {
-                jumpLogin()
+                jumpLogin(params)
             }
         } else {
             goGuide();
@@ -159,14 +158,22 @@ class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
         ARouter.getInstance().build(RouterPath.SplashCenter.SPLASH_GUIDE).navigation()
     }
 
-    private fun jumpMain() {
-        ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation()
+
+    private fun jumpMain(extra: String) {
+        var build: Postcard = ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME)
+        if (extra.isNotEmpty()) {
+            build.withString(Constants.COMMON_EXTRA_KEY, extra)
+        }
+        build.navigation()
     }
 
-    private fun jumpLogin() {
-        ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
-            .withInt(UserConstants.LOGIN_ITEM, VerifyCodeLoginActivity.TEACHER_ITEM)
-            .navigation()
+    private fun jumpLogin(extra: String) {
+        var build: Postcard = ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN)
+        build.withInt(UserConstants.LOGIN_ITEM, VerifyCodeLoginActivity.STUDENT_ITEM)
+        if (extra.isNotEmpty()) {
+            build.withString(Constants.COMMON_EXTRA_KEY, extra)
+        }
+        build.navigation()
     }
 
 }

+ 9 - 1
usercenter/src/main/java/com/cooleshow/usercenter/ui/activity/VerifyCodeLoginActivity.java

@@ -9,11 +9,13 @@ import android.text.method.LinkMovementMethod;
 import android.text.style.ClickableSpan;
 import android.view.View;
 
+import com.alibaba.android.arouter.facade.Postcard;
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.AppManager;
 import com.cooleshow.base.common.BaseApplication;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.constanst.LoginStatusConstants;
 import com.cooleshow.base.data.net.CommonParamsHelper;
 import com.cooleshow.base.event.LoginStatusEvent;
@@ -44,6 +46,7 @@ public class VerifyCodeLoginActivity extends BaseMVPActivity<ActivityVerifyCodeL
     public static final int LOGIN_STATUS_REQUEST_CODE = 10000002;
     public static final int TEACHER_ITEM = 1;
     public static final int STUDENT_ITEM = 2;
+    private String mExtra;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -66,6 +69,7 @@ public class VerifyCodeLoginActivity extends BaseMVPActivity<ActivityVerifyCodeL
         }
         viewBinding.tvSendVerifyCode.setOnClickListener(this);
         viewBinding.tvLoginByCode.setOnClickListener(this);
+        mExtra = getIntent().getStringExtra(Constants.COMMON_EXTRA_KEY);
         String phoneNum = getIntent().getStringExtra(UserConstants.PHONE_NUM_KEY);
         if (!TextUtils.isEmpty(phoneNum)) {
             viewBinding.etPhoneNum.setText(phoneNum);
@@ -129,7 +133,11 @@ public class VerifyCodeLoginActivity extends BaseMVPActivity<ActivityVerifyCodeL
                 String status = data.getStringExtra(UserConstants.LOGIN_STATUS);
                 if (TextUtils.equals(status, UserConstants.LOGIN_STATUS_SUCCESS)) {
                     //密码登录或者验证码登录(设置密码)等两种登录行为,最终通过这里跳转首页
-                    ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation();
+                    Postcard build = ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME);
+                    if (!TextUtils.isEmpty(mExtra)) {
+                        build.withString(Constants.COMMON_EXTRA_KEY, mExtra);
+                    }
+                    build.navigation();
                     finish();
                 }
             }