mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-27 20:15:29 +00:00
Ensure SplashActivity is ran before MainActivity
This commit is contained in:
parent
5ed4071f74
commit
105b2fc114
@ -3,6 +3,7 @@
|
|||||||
package com.topjohnwu.magisk.core
|
package com.topjohnwu.magisk.core
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Activity
|
||||||
import android.app.job.JobInfo
|
import android.app.job.JobInfo
|
||||||
import android.app.job.JobScheduler
|
import android.app.job.JobScheduler
|
||||||
import android.app.job.JobWorkItem
|
import android.app.job.JobWorkItem
|
||||||
@ -53,6 +54,10 @@ fun Class<*>.cmp(pkg: String): ComponentName {
|
|||||||
return ComponentName(pkg, Info.stub?.classToComponent?.get(name) ?: name)
|
return ComponentName(pkg, Info.stub?.classToComponent?.get(name) ?: name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline fun <reified T> Activity.redirect() = Intent(intent)
|
||||||
|
.setComponent(T::class.java.cmp(packageName))
|
||||||
|
.setFlags(0)
|
||||||
|
|
||||||
inline fun <reified T> Context.intent() = Intent().setComponent(T::class.java.cmp(packageName))
|
inline fun <reified T> Context.intent() = Intent().setComponent(T::class.java.cmp(packageName))
|
||||||
|
|
||||||
private open class GlobalResContext(base: Context) : ContextWrapper(base) {
|
private open class GlobalResContext(base: Context) : ContextWrapper(base) {
|
||||||
|
@ -2,8 +2,6 @@ package com.topjohnwu.magisk.core
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.topjohnwu.magisk.BuildConfig
|
import com.topjohnwu.magisk.BuildConfig
|
||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
@ -61,21 +59,11 @@ open class SplashActivity : Activity() {
|
|||||||
|
|
||||||
DONE = true
|
DONE = true
|
||||||
|
|
||||||
val section = if (intent.action == ACTION_APPLICATION_PREFERENCES) Const.Nav.SETTINGS
|
redirect<MainActivity>().also { startActivity(it) }
|
||||||
else intent.getStringExtra(Const.Key.OPEN_SECTION)
|
|
||||||
|
|
||||||
intent<MainActivity>()
|
|
||||||
.putExtra(Const.Key.OPEN_SECTION, section)
|
|
||||||
.also { startActivity(it) }
|
|
||||||
|
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val ACTION_APPLICATION_PREFERENCES get() =
|
|
||||||
if (Build.VERSION.SDK_INT >= 24) Intent.ACTION_APPLICATION_PREFERENCES
|
|
||||||
else "???"
|
|
||||||
|
|
||||||
var DONE = false
|
var DONE = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.topjohnwu.magisk.ui
|
package com.topjohnwu.magisk.ui
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -18,6 +20,8 @@ import com.topjohnwu.magisk.arch.BaseViewModel
|
|||||||
import com.topjohnwu.magisk.arch.ReselectionTarget
|
import com.topjohnwu.magisk.arch.ReselectionTarget
|
||||||
import com.topjohnwu.magisk.core.Const
|
import com.topjohnwu.magisk.core.Const
|
||||||
import com.topjohnwu.magisk.core.Info
|
import com.topjohnwu.magisk.core.Info
|
||||||
|
import com.topjohnwu.magisk.core.SplashActivity
|
||||||
|
import com.topjohnwu.magisk.core.redirect
|
||||||
import com.topjohnwu.magisk.databinding.ActivityMainMd2Binding
|
import com.topjohnwu.magisk.databinding.ActivityMainMd2Binding
|
||||||
import com.topjohnwu.magisk.ktx.startAnimations
|
import com.topjohnwu.magisk.ktx.startAnimations
|
||||||
import com.topjohnwu.magisk.ui.home.HomeFragmentDirections
|
import com.topjohnwu.magisk.ui.home.HomeFragmentDirections
|
||||||
@ -49,6 +53,13 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
// Make sure Splash is always ran before us
|
||||||
|
if (!SplashActivity.DONE) {
|
||||||
|
redirect<SplashActivity>().also { startActivity(it) }
|
||||||
|
finish()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (Info.env.isUnsupported) {
|
if (Info.env.isUnsupported) {
|
||||||
MagiskDialog(this)
|
MagiskDialog(this)
|
||||||
.applyTitle(R.string.unsupport_magisk_title)
|
.applyTitle(R.string.unsupport_magisk_title)
|
||||||
@ -97,8 +108,9 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
|
|
||||||
binding.mainNavigation.viewTreeObserver.addOnGlobalLayoutListener(navObserver)
|
binding.mainNavigation.viewTreeObserver.addOnGlobalLayoutListener(navObserver)
|
||||||
|
|
||||||
if (intent.hasExtra(Const.Key.OPEN_SECTION))
|
val section = if (intent.action == ACTION_APPLICATION_PREFERENCES) Const.Nav.SETTINGS
|
||||||
getScreen(intent.getStringExtra(Const.Key.OPEN_SECTION))?.navigate()
|
else intent.getStringExtra(Const.Key.OPEN_SECTION)
|
||||||
|
getScreen(section)?.navigate()
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
if (!isRootFragment) {
|
if (!isRootFragment) {
|
||||||
@ -177,4 +189,10 @@ open class MainActivity : BaseUIActivity<MainViewModel, ActivityMainMd2Binding>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val ACTION_APPLICATION_PREFERENCES get() =
|
||||||
|
if (Build.VERSION.SDK_INT >= 24) Intent.ACTION_APPLICATION_PREFERENCES
|
||||||
|
else "???"
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user