From 2cd673d77619a454375817e4e531831c67b43c48 Mon Sep 17 00:00:00 2001
From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
Date: Fri, 7 Nov 2025 11:08:27 +0800
Subject: [PATCH] manager: fix where the option displays "Temporary enable"
after device reboot
Co-authored-by: YuKongA <70465933+YuKongA@users.noreply.github.com>
---
.../com/sukisu/ultra/ui/screen/Settings.kt | 32 +++++++++++--------
.../src/main/res/values-zh-rCN/strings.xml | 4 +--
2 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt
index 137483da..b9135477 100644
--- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt
+++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt
@@ -10,8 +10,6 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.*
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
-import androidx.compose.foundation.interaction.MutableInteractionSource
-import androidx.compose.foundation.interaction.collectIsPressedAsState
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.rememberScrollState
@@ -143,9 +141,11 @@ fun SettingScreen(navigator: DestinationsNavigator) {
)
var enhancedSecurityMode by rememberSaveable {
mutableIntStateOf(
- prefs.getInt(
- "enhanced_security_mode", if (Natives.isEnhancedSecurityEnabled()) 1 else 0
- )
+ run {
+ val currentEnabled = Natives.isEnhancedSecurityEnabled()
+ val savedPersist = prefs.getInt("enhanced_security_mode", 0)
+ if (savedPersist == 2) 2 else if (currentEnabled) 1 else 0
+ }
)
}
SettingDropdown(
@@ -167,7 +167,7 @@ fun SettingScreen(navigator: DestinationsNavigator) {
1 -> if (Natives.setEnhancedSecurityEnabled(false)) {
execKsud("feature save", true)
if (Natives.setEnhancedSecurityEnabled(true)) {
- prefs.edit { putInt("enhanced_security_mode", 1) }
+ prefs.edit { putInt("enhanced_security_mode", 0) }
enhancedSecurityMode = 1
}
}
@@ -184,9 +184,11 @@ fun SettingScreen(navigator: DestinationsNavigator) {
var suCompatMode by rememberSaveable {
mutableIntStateOf(
- prefs.getInt(
- "su_compat_mode", if (!Natives.isSuEnabled()) 1 else 0
- )
+ run {
+ val currentEnabled = Natives.isSuEnabled()
+ val savedPersist = prefs.getInt("su_compat_mode", 0)
+ if (savedPersist == 2) 2 else if (!currentEnabled) 1 else 0
+ }
)
}
SettingDropdown(
@@ -208,7 +210,7 @@ fun SettingScreen(navigator: DestinationsNavigator) {
1 -> if (Natives.setSuEnabled(true)) {
execKsud("feature save", true)
if (Natives.setSuEnabled(false)) {
- prefs.edit { putInt("su_compat_mode", 1) }
+ prefs.edit { putInt("su_compat_mode", 0) }
suCompatMode = 1
}
}
@@ -225,9 +227,11 @@ fun SettingScreen(navigator: DestinationsNavigator) {
var kernelUmountMode by rememberSaveable {
mutableIntStateOf(
- prefs.getInt(
- "kernel_umount_mode", if (!Natives.isKernelUmountEnabled()) 1 else 0
- )
+ run {
+ val currentEnabled = Natives.isKernelUmountEnabled()
+ val savedPersist = prefs.getInt("kernel_umount_mode", 0)
+ if (savedPersist == 2) 2 else if (!currentEnabled) 1 else 0
+ }
)
}
SettingDropdown(
@@ -249,7 +253,7 @@ fun SettingScreen(navigator: DestinationsNavigator) {
1 -> if (Natives.setKernelUmountEnabled(true)) {
execKsud("feature save", true)
if (Natives.setKernelUmountEnabled(false)) {
- prefs.edit { putInt("kernel_umount_mode", 1) }
+ prefs.edit { putInt("kernel_umount_mode", 0) }
kernelUmountMode = 1
}
}
diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml
index e52ee6ca..c27db912 100644
--- a/manager/app/src/main/res/values-zh-rCN/strings.xml
+++ b/manager/app/src/main/res/values-zh-rCN/strings.xml
@@ -168,8 +168,8 @@
禁止任何应用通过 su 命令获取 root 权限(已运行的 root 进程不受影响)。
关闭内核 umount
关闭 KernelSU 控制的内核级 umount 行为。
- 启用增强安全
- 启用更严格的安全策略。
+ 增强安全性
+ 使用更严格的安全策略。
默认
临时启用
始终启用