mirror of
https://github.com/topjohnwu/Magisk.git
synced 2026-01-14 05:47:07 -08:00
Propagate Zygisk state to Magisk app
This commit is contained in:
@@ -28,9 +28,10 @@ object Info {
|
||||
|
||||
// Device state
|
||||
@JvmStatic val env by lazy { loadState() }
|
||||
@JvmField var isSAR = false
|
||||
@JvmField var isAB = false
|
||||
@JvmField val isVirtualAB = getProperty("ro.virtual_ab.enabled", "false") == "true"
|
||||
@JvmStatic var isSAR = false
|
||||
var isAB = false
|
||||
val isVirtualAB = getProperty("ro.virtual_ab.enabled", "false") == "true"
|
||||
@JvmField val isZygiskEnabled = System.getenv("ZYGISK_ENABLED") == "1"
|
||||
@JvmStatic val isFDE get() = crypto == "block"
|
||||
@JvmField var ramdisk = false
|
||||
@JvmField var hasGMS = true
|
||||
|
||||
@@ -62,7 +62,12 @@ class LogViewModel(
|
||||
val filename = "magisk_log_%s.log".format(now.toTime(timeFormatStandard))
|
||||
val logFile = MediaStoreUtils.getFile(filename, true)
|
||||
logFile.uri.outputStream().bufferedWriter().use { file ->
|
||||
file.write("---System Properties---\n\n")
|
||||
file.write("---Detected Device Info---\n\n")
|
||||
file.write("isAB=${Info.isAB}\n")
|
||||
file.write("isSAR=${Info.isSAR}\n")
|
||||
file.write("ramdisk=${Info.ramdisk}\n")
|
||||
|
||||
file.write("\n\n---System Properties---\n\n")
|
||||
ProcessBuilder("getprop").start()
|
||||
.inputStream.reader().use { it.copyTo(file) }
|
||||
|
||||
|
||||
@@ -236,20 +236,30 @@ object Magisk : BaseSettingsItem.Section() {
|
||||
|
||||
object Zygisk : BaseSettingsItem.Toggle() {
|
||||
override val title = R.string.zygisk.asText()
|
||||
override val description = R.string.settings_zygisk_summary.asText()
|
||||
override val description get() =
|
||||
if (mismatch) R.string.reboot_apply_change.asText()
|
||||
else R.string.settings_zygisk_summary.asText()
|
||||
override var value = Config.zygisk
|
||||
set(value) = setV(value, field, { field = it }) {
|
||||
Config.zygisk = it
|
||||
DenyList.isEnabled = it
|
||||
DenyListConfig.isEnabled = it
|
||||
DenyList.notifyPropertyChanged(BR.description)
|
||||
}
|
||||
val mismatch get() = value != Info.isZygiskEnabled
|
||||
}
|
||||
|
||||
object DenyList : BaseSettingsItem.Toggle() {
|
||||
override val title = R.string.settings_denylist_title.asText()
|
||||
override val description get() =
|
||||
if (isEnabled) R.string.settings_denylist_summary.asText()
|
||||
else R.string.settings_denylist_error.asText(R.string.zygisk.asText())
|
||||
if (isEnabled) {
|
||||
if (Zygisk.mismatch)
|
||||
R.string.reboot_apply_change.asText()
|
||||
else
|
||||
R.string.settings_denylist_summary.asText()
|
||||
} else {
|
||||
R.string.settings_denylist_error.asText(R.string.zygisk.asText())
|
||||
}
|
||||
|
||||
override var value = Config.denyList
|
||||
set(value) = setV(value, field, { field = it }) {
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.topjohnwu.magisk.databinding.itemBindingOf
|
||||
import com.topjohnwu.magisk.di.AppContext
|
||||
import com.topjohnwu.magisk.events.AddHomeIconEvent
|
||||
import com.topjohnwu.magisk.events.RecreateEvent
|
||||
import com.topjohnwu.magisk.events.SnackbarEvent
|
||||
import com.topjohnwu.magisk.events.dialog.BiometricEvent
|
||||
import com.topjohnwu.magisk.ktx.activity
|
||||
import com.topjohnwu.magisk.utils.Utils
|
||||
@@ -97,15 +98,19 @@ class SettingsViewModel : BaseViewModel(), BaseSettingsItem.Callback {
|
||||
return list
|
||||
}
|
||||
|
||||
override fun onItemPressed(view: View, item: BaseSettingsItem, callback: () -> Unit) = when (item) {
|
||||
is DownloadPath -> withExternalRW(callback)
|
||||
is Biometrics -> authenticate(callback)
|
||||
is Theme -> SettingsFragmentDirections.actionSettingsFragmentToThemeFragment().navigate()
|
||||
is DenyListConfig -> SettingsFragmentDirections.actionSettingsFragmentToDenyFragment().navigate()
|
||||
is SystemlessHosts -> createHosts()
|
||||
is Restore -> HideAPK.restore(view.activity)
|
||||
is AddShortcut -> AddHomeIconEvent().publish()
|
||||
else -> callback()
|
||||
override fun onItemPressed(view: View, item: BaseSettingsItem, callback: () -> Unit) {
|
||||
when (item) {
|
||||
is DownloadPath -> withExternalRW(callback)
|
||||
is Biometrics -> authenticate(callback)
|
||||
is Theme ->
|
||||
SettingsFragmentDirections.actionSettingsFragmentToThemeFragment().navigate()
|
||||
is DenyListConfig ->
|
||||
SettingsFragmentDirections.actionSettingsFragmentToDenyFragment().navigate()
|
||||
is SystemlessHosts -> createHosts()
|
||||
is Restore -> HideAPK.restore(view.activity)
|
||||
is AddShortcut -> AddHomeIconEvent().publish()
|
||||
else -> callback()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onItemChanged(view: View, item: BaseSettingsItem) {
|
||||
@@ -113,6 +118,7 @@ class SettingsViewModel : BaseViewModel(), BaseSettingsItem.Callback {
|
||||
is Language -> RecreateEvent().publish()
|
||||
is UpdateChannel -> openUrlIfNecessary(view)
|
||||
is Hide -> viewModelScope.launch { HideAPK.hide(view.activity, item.value) }
|
||||
is Zygisk -> if (Zygisk.mismatch) SnackbarEvent(R.string.reboot_apply_change).publish()
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user