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"))}}
}