Loading

安卓中执行 root 命令

object SuShell {
    private const val SU_CMD = "su"

    fun exec(cmd: String): Result<String> {
        val process = Runtime.getRuntime().exec(SU_CMD)
        val writer = process.outputStream.bufferedWriter()
        writer.write(cmd)
        writer.newLine()
        writer.write("exit")
        writer.newLine()
        writer.flush()
        val exitCode = process.waitFor()

        val reader = if (exitCode == 0) {
            process.inputStream.bufferedReader()
        } else {
            process.errorStream.bufferedReader()
        }

        val content = reader.use { it.readText() }

        return if (exitCode == 0) {
            Result.success(content)
        } else {
            Result.failure(RuntimeException("[$exitCode]: $content"))
        }
    }
}
posted @ 2025-11-20 20:52  xtyuns  阅读(4)  评论(0)    收藏  举报