diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt index de7fe75b..364c2584 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/Home.kt @@ -347,13 +347,6 @@ private fun StatusCard( style = MaterialTheme.typography.bodyMedium ) } - Spacer(modifier = Modifier.height(4.dp)) - - val kpmVersion = getKpmVersion() - Text( - text = stringResource(R.string.home_kpm_version, kpmVersion), - style = MaterialTheme.typography.bodyMedium - ) } } @@ -555,6 +548,12 @@ private fun InfoCard() { InfoCardItem(stringResource(R.string.home_selinux_status), getSELinuxStatus()) + if (!isSimpleMode) { + Spacer(Modifier.height(16.dp)) + InfoCardItem(stringResource(R.string.home_kpm_version), getKpmVersion()) + } + + if (!isSimpleMode) { Spacer(modifier = Modifier.height(16.dp)) diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/kpm.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/kpm.kt index 7054a447..6c7729ba 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/kpm.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/screen/kpm.kt @@ -102,19 +102,25 @@ fun KpmScreen( if (confirmResult == ConfirmResult.Confirmed) { val success = loadingDialog.withLoading { - loadKpmModule(tempFile.absolutePath) + try { + val process = ProcessBuilder("nsenter", "-t", "1", "-m").start() + process.waitFor() + loadKpmModule(tempFile.absolutePath) + } catch (e: Exception) { + Log.e("KsuCli", "Failed to execute nsenter command: ${e.message}") + "failed" + } } Log.d("KsuCli", "loadKpmModule result: $success") - if (success == "success") { + if (success.contains("Success", ignoreCase = true)) { viewModel.fetchModuleList() snackBarHost.showSnackbar( message = kpmInstallSuccess, duration = SnackbarDuration.Long ) } else { - // 修正为显示安装失败的消息 snackBarHost.showSnackbar( message = kpmInstallFailed, duration = SnackbarDuration.Long @@ -157,7 +163,7 @@ fun KpmScreen( onClick = { selectPatchLauncher.launch( Intent(Intent.ACTION_GET_CONTENT).apply { - type = "application/*" + type = "*/*" } ) }, @@ -238,7 +244,7 @@ fun KpmScreen( unloadKpmModule(module.id) } Log.d("KsuCli", "unloadKpmModule result: $success") - if (success == "success") { + if (success.contains("Success", ignoreCase = true)) { viewModel.fetchModuleList() snackBarHost.showSnackbar( message = kpmUninstallSuccess, 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 7a345adc..08e3f5be 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -230,11 +230,11 @@ 确定要卸载内核模块 %1$s 吗? 卸载成功 卸载失败 - 安装kpm模块 - 确认安装吗? - 安装kpm模块成功 - 安装kpm模块失败 - KPM 版本: %s + 加载kpm模块 + 确认加载吗? + 加载kpm模块成功 + 加载kpm模块失败 + KPM 版本 关闭 以下内核模块功能由KernelPatch开发,经过修改后加入SukiSU Ultra的内核模块功能 SukiSU Ultra展望 diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index 861e94c3..c24c465c 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -232,13 +232,13 @@ Determine the kernel module to uninstall: %1$s ? Uninstalled successfully Failed to uninstall - Installing the kpm module - Confirm installation? - Installation of kpm module successful - Installation of kpm module failed + Load the kpm module + Confirm Load? + Load of kpm module successful + Load of kpm module failed kpm parameters kpm control - KPM Version: %s + KPM Version close The following kernel module functions were developed by KernelPatch and modified to include the kernel module functions of SukiSU Ultra SukiSU Ultra Look forward to