MainActivity.kt 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package com.adealink.weparty
  2. import android.content.Intent
  3. import android.graphics.drawable.ColorDrawable
  4. import android.os.Bundle
  5. import android.view.WindowManager
  6. import androidx.fragment.app.FragmentContainerView
  7. import com.adealink.frame.aab.util.getCompatColor
  8. import com.adealink.frame.log.Log
  9. import com.adealink.frame.push.data.KEY_PUSH_DEEPLINK
  10. import com.adealink.frame.push.data.KEY_PUSH_ID
  11. import com.adealink.frame.push.data.KEY_PUSH_MESSAGE_TYPE
  12. import com.adealink.frame.router.Router
  13. import com.adealink.frame.router.annotation.BindExtra
  14. import com.adealink.frame.router.annotation.RouterUri
  15. import com.adealink.frame.router.manager.deeplinkRouterManager
  16. import com.adealink.weparty.commonui.BaseActivity
  17. import com.adealink.weparty.module.account.Account
  18. import com.adealink.weparty.module.account.AccountModule
  19. import com.adealink.weparty.push.PushStatEvent
  20. import com.adealink.weparty.storage.AppPref
  21. import com.adealink.weparty.ui.MainStartUpFragment
  22. import com.adealink.weparty.ui.home.HomeFragment
  23. import com.adealink.weparty.update.updateManager
  24. import com.adealink.weparty.util.goLocalLinkPage
  25. import com.qmuiteam.qmui.widget.util.QMUIStatusBarHelper
  26. @RouterUri(path = [AppModule.Main.PATH], desc = "首页")
  27. class MainActivity : BaseActivity() {
  28. companion object {
  29. private const val TAG = "MainActivity"
  30. }
  31. enum class DispatchFrom {
  32. ON_CREATE,
  33. ON_NEW_INTENT
  34. }
  35. @BindExtra(AppModule.Main.EXTRA_MAIN_TAB)
  36. var mainTabKey: String? = ""
  37. @BindExtra(AppModule.Main.EXTRA_MAIN_SUB_TAB)
  38. var subTabKey: String? = ""
  39. private var dispatchRouter = false
  40. override val routeSubPage: Boolean
  41. get() = !dispatchRouter
  42. override val forceFitNavigationBar: Boolean
  43. get() = true
  44. override fun onBeforeCreate() {
  45. super.onBeforeCreate()
  46. android.util.Log.d(TAG, "onCreate")
  47. Router.bind(this)
  48. }
  49. override fun onAfterSuperCreate(): Boolean {
  50. if (!isTaskRoot) {
  51. finish()
  52. return false
  53. }
  54. return true
  55. }
  56. override fun initViews() {
  57. super.initViews()
  58. //还原启动图背景,清除全屏模式
  59. window.setBackgroundDrawable(ColorDrawable(getCompatColor(R.color.white)))
  60. window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
  61. QMUIStatusBarHelper.setStatusBarLightMode(this)
  62. setContentView(FragmentContainerView(this).apply {
  63. id = R.id.fl_content
  64. })
  65. dispatch(intent, DispatchFrom.ON_CREATE)
  66. }
  67. override fun initOthers() {
  68. super.initOthers()
  69. // reportAppOpenIfNeed(false)
  70. // serveReportManager.reportFirebaseAppInstanceId()
  71. }
  72. override fun onResume() {
  73. super.onResume()
  74. updateManager.checkUpdate(this)
  75. }
  76. override fun handleNewIntent(intent: Intent?) {
  77. super.handleNewIntent(intent)
  78. setIntent(intent)
  79. intent?.extras?.let {
  80. mainTabKey = it.getString(AppModule.Main.EXTRA_MAIN_TAB)
  81. subTabKey = it.getString(AppModule.Main.EXTRA_MAIN_SUB_TAB)
  82. }
  83. dispatch(intent, DispatchFrom.ON_NEW_INTENT)
  84. }
  85. private fun dispatch(intent: Intent?, from: DispatchFrom) {
  86. when {
  87. needGoLoginActivity() -> {
  88. Log.d(TAG, "needGoLoginActivity")
  89. Router.build(this, Account.Login.PATH)
  90. .putExtras(intent?.extras ?: Bundle())
  91. .start()
  92. finish()
  93. return
  94. }
  95. needGoRegisterActivity() -> {
  96. Log.d(TAG, "needGoRegisterActivity")
  97. Router.build(this, Account.Register.PATH)
  98. .putExtras(intent?.extras ?: Bundle())
  99. .start()
  100. finish()
  101. return
  102. }
  103. }
  104. inflateHomeFragment(from)
  105. intent ?: return
  106. val pushDeeplink = intent.getStringExtra(KEY_PUSH_DEEPLINK)
  107. if (!pushDeeplink.isNullOrEmpty()) {
  108. Log.d(TAG, "dispatchPath, pushDeeplink:$pushDeeplink")
  109. PushStatEvent(PushStatEvent.Action.CLICK).apply {
  110. type to (intent.extras?.getString(KEY_PUSH_MESSAGE_TYPE) ?: "1")
  111. pushId to (intent.extras?.getString(KEY_PUSH_ID) ?: "1")
  112. source to "new_fcm_push"
  113. deeplink to pushDeeplink
  114. }.send()
  115. goLocalLinkPage(this, pushDeeplink)
  116. return
  117. }
  118. val dispatchPath = intent.getStringExtra(deeplinkRouterManager.getDispatchPathKey())
  119. if (!dispatchPath.isNullOrEmpty()) {
  120. Log.d(TAG, "dispatchPath, path:$dispatchPath")
  121. if (dispatchPath.startsWith(Router.getDeepLink(AppModule.Main.PATH))) {
  122. return
  123. }
  124. dispatchRouter = true
  125. Router.build(this, dispatchPath).putExtras(intent).start()
  126. return
  127. }
  128. val splashBannerUrl = intent.getStringExtra(AppModule.Main.EXTRA_SPLASH_JUMP_URL)
  129. if (!splashBannerUrl.isNullOrEmpty()) {
  130. Log.d(TAG, "dispatchPath, splashBannerUrl:$splashBannerUrl")
  131. goLocalLinkPage(this, splashBannerUrl)
  132. return
  133. }
  134. }
  135. private fun needGoLoginActivity(): Boolean {
  136. return true
  137. //return !AccountModule.isLogin()
  138. }
  139. private fun needGoRegisterActivity(): Boolean {
  140. return AppPref.needRegister
  141. }
  142. private fun inflateHomeFragment(from: DispatchFrom) {
  143. var homeFragment =
  144. supportFragmentManager.findFragmentByTag(HomeFragment.TAG) as? HomeFragment
  145. if (homeFragment?.isAdded == true && from == DispatchFrom.ON_CREATE) {
  146. return
  147. }
  148. homeFragment = homeFragment ?: HomeFragment.newInstance(
  149. mainTabKey, subTabKey
  150. )
  151. supportFragmentManager.beginTransaction()
  152. .replace(R.id.fl_content, homeFragment, HomeFragment.TAG)
  153. .commitAllowingStateLoss()
  154. MainStartUpFragment.inject(this)
  155. }
  156. }