diff --git a/app/src/main/java/com/gh/common/interceptor/MainInterceptor.kt b/app/src/main/java/com/gh/common/interceptor/MainInterceptor.kt new file mode 100644 index 0000000000..9a0640737a --- /dev/null +++ b/app/src/main/java/com/gh/common/interceptor/MainInterceptor.kt @@ -0,0 +1,29 @@ +package com.gh.common.interceptor + +import com.gh.gamecenter.common.constant.RouteConsts +import com.halo.assistant.HaloApp +import com.therouter.router.RouteItem +import com.therouter.router.interceptor.RouterReplaceInterceptor +import com.therouter.router.matchRouteMap + +/** + * 主拦截器 + */ +class MainInterceptor: RouterReplaceInterceptor() { + + override fun replace(routeItem: RouteItem?): RouteItem? { + if (routeItem == null) return null + + // 用户是否已经同意隐私政策 + val isUserAcceptPrivacyPolicy = HaloApp.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) + + // 如果用户已经同意隐私政策并且应用已经启动,直接返回 routeItem ,运行跳转 + if (isUserAcceptPrivacyPolicy && HaloApp.getInstance().isAlreadyUpAndRunning) { + return routeItem + } + + // 指向调整为 SplashScreenActivity + return matchRouteMap(RouteConsts.activity.splashActivity) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index b2293383cc..838630c950 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -119,6 +119,7 @@ import com.sina.weibo.sdk.auth.AuthInfo; import com.sina.weibo.sdk.openapi.IWBAPI; import com.sina.weibo.sdk.openapi.WBAPIFactory; +import com.therouter.TheRouter; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.jetbrains.annotations.NotNull; @@ -255,9 +256,12 @@ public class MainActivity extends BaseActivity { // 跳转至其它页面 if (getIntent() != null - && getIntent().getExtras() != null - && getIntent().getBooleanExtra(EntranceConsts.KEY_REQUIRE_REDIRECT, false)) { - doSkip(); + && getIntent().getExtras() != null) { + if (getIntent().getBooleanExtra(EntranceConsts.KEY_REQUIRE_REDIRECT, false)) { + doSkip(); + } else if (!TextUtils.isEmpty(getIntent().getStringExtra(EntranceConsts.KEY_THE_ROUTER_PATH))) { + doRedirect(getIntent().getStringExtra(EntranceConsts.KEY_THE_ROUTER_PATH)); + } } // debug 模式下的快速跳转页面 @@ -820,6 +824,19 @@ public class MainActivity extends BaseActivity { }, 500); } + /** + * 重定向至 TheRouter 配置的页面 + */ + private void doRedirect(String path) { + if (getIntent().getExtras() != null) { + // 更新 intent 数据,避免页面重建重新跳转 + getIntent().getExtras().putString(EntranceConsts.KEY_THE_ROUTER_PATH, ""); + AppExecutor.getUiExecutor().executeWithDelay(() -> { + TheRouter.build(path).navigation(this); + }, 500L); + } + } + @NonNull private Function0 launchGame(String gamePackageName) { return () -> { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailWrapperFragment.kt index cf45dd13b6..011c5536b5 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailWrapperFragment.kt @@ -757,6 +757,7 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable { bundle.putString(EntranceConsts.KEY_CUSTOM_PAGE_ID, tabEntity.link?.link) bundle.putString(EntranceConsts.KEY_CUSTOM_PAGE_NAME, tabEntity.link?.text) bundle.putBoolean(EntranceConsts.KEY_SHOW_FLOATING_WINDOW, false) + bundle.putBoolean(EntranceConsts.KEY_SHOW_PULL_DOWN_PUSH, false) } } fragment?.let { @@ -765,7 +766,7 @@ class GameDetailWrapperFragment : BaseLazyFragment(), IScrollable { } } viewPager.setRestoredCurItem(destinationTab) - currentVpPosition = destinationTab + onPageSelected(destinationTab) viewPager.offscreenPageLimit = fragmentsList.size viewPager.adapter = FragmentAdapter(childFragmentManager, fragmentsList, tabEntityList.map { it.name }) diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt index e0dda994ab..994992b1b4 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageFragment.kt @@ -112,6 +112,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable, IB private var bottomTabName = "" private var tabIndex = -1 private var showFloatingWindow = true + private var showPullDownPush = true private lateinit var pageLocation: PageLocation @@ -143,6 +144,7 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable, IB bottomTabName = arguments?.getString(EntranceConsts.KEY_BOTTOM_TAB_NAME, "") ?: "" tabIndex = arguments?.getInt(EntranceConsts.KEY_TAB_INDEX, -1) ?: -1 showFloatingWindow = arguments?.getBoolean(EntranceConsts.KEY_SHOW_FLOATING_WINDOW, true) ?: true + showPullDownPush = arguments?.getBoolean(EntranceConsts.KEY_SHOW_PULL_DOWN_PUSH, true) ?: true val tabName = arguments?.getString(EntranceConsts.KEY_TAB_NAME, "") ?: "" val multiTabNavId = arguments?.getString(EntranceConsts.KEY_MULTI_TAB_NAV_ID, "") ?: "" val multiTabNavName = arguments?.getString(EntranceConsts.KEY_MULTI_TAB_NAV_NAME, "") ?: "" @@ -587,7 +589,9 @@ class CustomPageFragment : LazyFragment(), ISmartRefreshContent, IScrollable, IB private fun buildPriorityChain() { val videoHandler = VideoHandler(24, scrollCalculatorHelper) - priorityChain.addHandler(pullDownPushHandler) + if (showPullDownPush) { + priorityChain.addHandler(pullDownPushHandler) + } if (showFloatingWindow) { val floatingWindowHandler = CustomFloatingWindowHandler(23) diff --git a/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ViewModel.kt b/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ViewModel.kt index 45cca7df70..17eaa0d299 100644 --- a/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/servers/gametest2/GameServerTestV2ViewModel.kt @@ -83,7 +83,7 @@ class GameServerTestV2ViewModel(application: Application) : AndroidViewModel(app companion object { const val RECENT_GAME = "近期" const val TODAY_GAME = "今天" - const val FUTURE_GAME = "未来" + const val FUTURE_GAME = "预约" } class Factory(private val mApplication: Application) : diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 123f46f6aa..3e3d3cf37f 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -27,6 +27,7 @@ import com.gh.ad.AdDelegateHelper; import com.gh.base.GlobalActivityLifecycleObserver; import com.gh.common.FixedRateJobHelper; import com.gh.common.filter.RegionSettingHelper; +import com.gh.common.interceptor.MainInterceptor; import com.gh.common.prioritychain.GlobalPriorityChainHelper; import com.gh.common.util.ActivationHelper; import com.gh.common.util.DataUtils; @@ -290,6 +291,7 @@ public class HaloApp extends MultiDexApplication { private void initRouter() { TheRouter.init(this); + NavigatorKt.addRouterReplaceInterceptor(new MainInterceptor()); NavigatorKt.addRouterReplaceInterceptor(new LoginInterceptor()); } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java index 8fa8d16d59..17eb9c005d 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java @@ -364,8 +364,11 @@ public class EntranceConsts { public static final String KEY_DISPLAY_TYPE = "display_type"; public static final String KEY_SHOW_FLOATING_WINDOW = "key_show_floating_window"; + public static final String KEY_SHOW_PULL_DOWN_PUSH = "key_show_pull_down_push"; public static final String KEY_HIDE_TOOLBAR = "hide_toolbar"; + public static final String KEY_THE_ROUTER_PATH = "therouter_path"; + public static final String KEY_ACCT_ZONE_INFO = "acct_zone_info"; public static final String KEY_IS_NEED_RECORD = "is_need_record"; public static final String KEY_HAS_MULTI_ZONE = "has_multi_zone";