diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Config.kt b/app/src/main/java/com/topjohnwu/magisk/core/Config.kt index 85898b064..a7e817fe7 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/Config.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/Config.kt @@ -59,9 +59,6 @@ object Config : PreferenceModel, DBConfig { const val BOOT_ID = "boot_id" const val ASKED_HOME = "asked_home" const val DOH = "doh" - - // system state - const val MAGISKHIDE = "magiskhide" } object Value { @@ -133,7 +130,6 @@ object Config : PreferenceModel, DBConfig { var suTapjack by preference(Key.SU_TAPJACK, true) var checkUpdate by preference(Key.CHECK_UPDATES, true) var doh by preference(Key.DOH, false) - var magiskHide by preference(Key.MAGISKHIDE, true) var showSystemApp by preference(Key.SHOW_SYSTEM_APP, false) var customChannelUrl by preference(Key.CUSTOM_CHANNEL, "") diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Const.kt b/app/src/main/java/com/topjohnwu/magisk/core/Const.kt index 69b6973d8..edd10c3f5 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/Const.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/Const.kt @@ -27,6 +27,7 @@ object Const { // Misc val USER_ID = Process.myUid() / 100000 + val APP_IS_CANARY get() = Version.isCanary(BuildConfig.VERSION_CODE) object Version { const val MIN_VERSION = "v20.4" @@ -34,7 +35,9 @@ object Const { fun atLeast_21_0() = Info.env.magiskVersionCode >= 21000 || isCanary() fun atLeast_21_2() = Info.env.magiskVersionCode >= 21200 || isCanary() - fun isCanary() = Info.env.magiskVersionCode % 100 != 0 + fun isCanary() = isCanary(Info.env.magiskVersionCode) + + fun isCanary(ver: Int) = ver > 0 && ver % 100 != 0 } object ID { @@ -49,7 +52,7 @@ object Const { const val PATREON_URL = "https://www.patreon.com/topjohnwu" const val SOURCE_CODE_URL = "https://github.com/topjohnwu/Magisk" - val CHANGELOG_URL = if (BuildConfig.VERSION_CODE % 100 != 0) Info.remote.magisk.note + val CHANGELOG_URL = if (APP_IS_CANARY) Info.remote.magisk.note else "https://topjohnwu.github.io/Magisk/releases/${BuildConfig.VERSION_CODE}.md" const val GITHUB_RAW_URL = "https://raw.githubusercontent.com/" @@ -76,7 +79,6 @@ object Const { object Nav { const val HOME = "home" const val SETTINGS = "settings" - const val HIDE = "hide" const val MODULES = "modules" const val SUPERUSER = "superuser" } diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Info.kt b/app/src/main/java/com/topjohnwu/magisk/core/Info.kt index cb2b89e41..98816dea8 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/Info.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/Info.kt @@ -51,25 +51,22 @@ object Info { private fun loadState() = Env( fastCmd("magisk -v").split(":".toRegex())[0], - runCatching { fastCmd("magisk -V").toInt() }.getOrDefault(-1), - Shell.su("magiskhide status").exec().isSuccess + runCatching { fastCmd("magisk -V").toInt() }.getOrDefault(-1) ) class Env( val magiskVersionString: String = "", - code: Int = -1, - hide: Boolean = false + code: Int = -1 ) { - val magiskHide get() = Config.magiskHide val magiskVersionCode = when { code < Const.Version.MIN_VERCODE -> -1 else -> if (Shell.rootAccess()) code else -1 } val isUnsupported = code > 0 && code < Const.Version.MIN_VERCODE val isActive = magiskVersionCode >= 0 - - init { - Config.magiskHide = hide - } + var denyListEnforced = if (Const.Version.isCanary(code)) + Shell.su("magisk --denylist status").exec().isSuccess + else + false } } diff --git a/app/src/main/java/com/topjohnwu/magisk/core/Receiver.kt b/app/src/main/java/com/topjohnwu/magisk/core/Receiver.kt index bfc44accb..d500f91b8 100644 --- a/app/src/main/java/com/topjohnwu/magisk/core/Receiver.kt +++ b/app/src/main/java/com/topjohnwu/magisk/core/Receiver.kt @@ -42,7 +42,7 @@ open class Receiver : BaseReceiver() { getUid(intent)?.let { rmPolicy(it) } } Intent.ACTION_PACKAGE_FULLY_REMOVED -> { - getPkg(intent)?.let { Shell.su("magiskhide rm $it").submit() } + getPkg(intent)?.let { Shell.su("magisk --denylist rm $it").submit() } } Intent.ACTION_LOCALE_CHANGED -> Shortcuts.setupDynamic(context) } diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt b/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt index 339b85506..274fae8ff 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt @@ -60,7 +60,7 @@ open class MainActivity : BaseUIActivity( R.id.homeFragment, R.id.modulesFragment, R.id.superuserFragment, - R.id.hideFragment, + R.id.denyFragment, R.id.logFragment -> true else -> false } @@ -170,7 +170,6 @@ open class MainActivity : BaseUIActivity( private fun getScreen(name: String?): NavDirections? { return when (name) { Const.Nav.SUPERUSER -> MainDirections.actionSuperuserFragment() - Const.Nav.HIDE -> MainDirections.actionHideFragment() Const.Nav.MODULES -> MainDirections.actionModuleFragment() Const.Nav.SETTINGS -> HomeFragmentDirections.actionHomeFragmentToSettingsFragment() else -> null @@ -183,7 +182,7 @@ open class MainActivity : BaseUIActivity( R.id.modulesFragment -> MainDirections.actionModuleFragment() R.id.superuserFragment -> MainDirections.actionSuperuserFragment() R.id.logFragment -> MainDirections.actionLogFragment() - R.id.hideFragment -> MainDirections.actionHideFragment() + R.id.denyFragment -> MainDirections.actionDenylistFragment() else -> null } } diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt b/app/src/main/java/com/topjohnwu/magisk/ui/deny/AppProcessInfo.kt similarity index 80% rename from app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt rename to app/src/main/java/com/topjohnwu/magisk/ui/deny/AppProcessInfo.kt index bd3d46317..a9cdd5ff6 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/deny/AppProcessInfo.kt @@ -1,4 +1,4 @@ -package com.topjohnwu.magisk.ui.hide +package com.topjohnwu.magisk.ui.deny import android.annotation.SuppressLint import android.content.pm.ApplicationInfo @@ -13,7 +13,7 @@ import com.topjohnwu.magisk.ktx.getLabel import com.topjohnwu.magisk.ktx.isIsolated import com.topjohnwu.magisk.ktx.useAppZygote -class CmdlineHiddenItem(line: String) { +class CmdlineListItem(line: String) { val packageName: String val process: String @@ -27,19 +27,19 @@ class CmdlineHiddenItem(line: String) { const val ISOLATED_MAGIC = "isolated" @SuppressLint("InlinedApi") -class HideAppInfo(info: ApplicationInfo, pm: PackageManager, hideList: List) - : ApplicationInfo(info), Comparable { +class AppProcessInfo(info: ApplicationInfo, pm: PackageManager, denyList: List) + : ApplicationInfo(info), Comparable { val label = info.getLabel(pm) val iconImage: Drawable = info.loadIcon(pm) - val processes = fetchProcesses(pm, hideList) + val processes = fetchProcesses(pm, denyList) - override fun compareTo(other: HideAppInfo) = comparator.compare(this, other) + override fun compareTo(other: AppProcessInfo) = comparator.compare(this, other) private fun fetchProcesses( pm: PackageManager, - hideList: List - ): List { + denylist: List + ): List { // Fetch full PackageInfo val baseFlag = MATCH_DISABLED_COMPONENTS or MATCH_UNINSTALLED_PACKAGES val packageInfo = try { @@ -58,9 +58,9 @@ class HideAppInfo(info: ApplicationInfo, pm: PackageManager, hideList: List