manager: show confirm dialog when grant root to app.
This commit is contained in:
@@ -24,7 +24,10 @@ import com.ramcosta.composedestinations.annotation.Destination
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import me.weishu.kernelsu.Natives
|
import me.weishu.kernelsu.Natives
|
||||||
import me.weishu.kernelsu.R
|
import me.weishu.kernelsu.R
|
||||||
|
import me.weishu.kernelsu.ui.component.ConfirmDialog
|
||||||
|
import me.weishu.kernelsu.ui.component.DialogResult
|
||||||
import me.weishu.kernelsu.ui.component.SearchAppBar
|
import me.weishu.kernelsu.ui.component.SearchAppBar
|
||||||
|
import me.weishu.kernelsu.ui.util.LocalDialogHost
|
||||||
import me.weishu.kernelsu.ui.util.LocalSnackbarHost
|
import me.weishu.kernelsu.ui.util.LocalSnackbarHost
|
||||||
import me.weishu.kernelsu.ui.viewmodel.SuperUserViewModel
|
import me.weishu.kernelsu.ui.viewmodel.SuperUserViewModel
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -91,6 +94,8 @@ fun SuperUserScreen() {
|
|||||||
}
|
}
|
||||||
) { innerPadding ->
|
) { innerPadding ->
|
||||||
|
|
||||||
|
ConfirmDialog()
|
||||||
|
|
||||||
val refreshState = rememberPullRefreshState(
|
val refreshState = rememberPullRefreshState(
|
||||||
refreshing = viewModel.isRefreshing,
|
refreshing = viewModel.isRefreshing,
|
||||||
onRefresh = { scope.launch { viewModel.fetchAppList() } },
|
onRefresh = { scope.launch { viewModel.fetchAppList() } },
|
||||||
@@ -105,12 +110,32 @@ fun SuperUserScreen() {
|
|||||||
LazyColumn(Modifier.fillMaxSize()) {
|
LazyColumn(Modifier.fillMaxSize()) {
|
||||||
items(viewModel.appList, key = { it.packageName }) { app ->
|
items(viewModel.appList, key = { it.packageName }) { app ->
|
||||||
var isChecked by rememberSaveable(app) { mutableStateOf(app.onAllowList) }
|
var isChecked by rememberSaveable(app) { mutableStateOf(app.onAllowList) }
|
||||||
|
val dialogHost = LocalDialogHost.current
|
||||||
|
val content =
|
||||||
|
stringResource(id = R.string.superuser_allow_root_confirm, app.label)
|
||||||
|
val confirm = stringResource(id = android.R.string.ok)
|
||||||
|
val cancel = stringResource(id = android.R.string.cancel)
|
||||||
|
|
||||||
AppItem(app, isChecked) { checked ->
|
AppItem(app, isChecked) { checked ->
|
||||||
val success = Natives.allowRoot(app.uid, checked)
|
scope.launch {
|
||||||
if (success) {
|
if (checked) {
|
||||||
isChecked = checked
|
val dialogResult = dialogHost.showDialog(
|
||||||
} else scope.launch {
|
app.label,
|
||||||
snackbarHost.showSnackbar(failMessage.format(app.uid))
|
content = content,
|
||||||
|
confirm = confirm,
|
||||||
|
dismiss = cancel
|
||||||
|
)
|
||||||
|
if (dialogResult != DialogResult.Confirmed) {
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val success = Natives.allowRoot(app.uid, checked)
|
||||||
|
if (success) {
|
||||||
|
isChecked = checked
|
||||||
|
} else {
|
||||||
|
snackbarHost.showSnackbar(failMessage.format(app.uid))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
<string name="selinux_status_unknown">未知</string>
|
<string name="selinux_status_unknown">未知</string>
|
||||||
<string name="superuser">超级用户</string>
|
<string name="superuser">超级用户</string>
|
||||||
<string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string>
|
<string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string>
|
||||||
|
<string name="superuser_allow_root_confirm">确定要授予 %s ROOT 权限吗?</string>
|
||||||
<string name="module_failed_to_enable">无法启用模块: %s</string>
|
<string name="module_failed_to_enable">无法启用模块: %s</string>
|
||||||
<string name="module_failed_to_disable">无法禁用模块: %s</string>
|
<string name="module_failed_to_disable">无法禁用模块: %s</string>
|
||||||
<string name="module_empty">没有安装模块</string>
|
<string name="module_empty">没有安装模块</string>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<string name="selinux_status_unknown">Unknown</string>
|
<string name="selinux_status_unknown">Unknown</string>
|
||||||
<string name="superuser">Superuser</string>
|
<string name="superuser">Superuser</string>
|
||||||
<string name="superuser_failed_to_grant_root">Failed to grant root for %d</string>
|
<string name="superuser_failed_to_grant_root">Failed to grant root for %d</string>
|
||||||
|
<string name="superuser_allow_root_confirm">Are you sure to grant root access to %s?</string>
|
||||||
<string name="module_failed_to_enable">Failed to enable module: %s</string>
|
<string name="module_failed_to_enable">Failed to enable module: %s</string>
|
||||||
<string name="module_failed_to_disable">Failed to disable module: %s</string>
|
<string name="module_failed_to_disable">Failed to disable module: %s</string>
|
||||||
<string name="module_empty">No module installed</string>
|
<string name="module_empty">No module installed</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user