无法运行程序“su”:错误=13,Android 应用程序中的权限被拒绝

问题描述

我的 DHCP 方法返回闪烁。从 val 进程获取错误:Process =Runtime.getRuntime().exec(commands)" 这一行

在此输入代码//DHCP设置功能>>

suspend fun dhcpsetup(): Boolean {
    var success = true
    success = success && runRootCommand("echo 1 > /proc/sys/net/ipv4/ip_forward")
    success = success && runRootCommand("iptables -F")
    success = success && runRootCommand("iptables -t nat -A POSTROUTING  -j MASQUERADE")
    success = success && runRootCommand("iptables -A FORWARD -j ACCEPT")
    success = success && runRootCommand("iptables -t nat -A PREROUTING  -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53")
    success = success && runRootCommand("iptables -A FORWARD -p udp -d 8.8.8.8 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT")
    return success
}

//命令执行函数>>>

private suspend fun runRootCommand(command: String): Boolean {
    val commands = arrayOf("su","-c",command)
    val start: Long = System.currentTimeMillis()
    val process: Process = Runtime.getRuntime().exec(commands)
    val result = process.waitFor()
    val end: Long = System.currentTimeMillis()
    Log.d("RootManager","Command ${Arrays.toString(commands)} executed in ${end - start} ms " +
            " with result $result")
    return result == 0
}

解决方法

su 表示超级用户,这些命令仅适用于具有更高权限和一些扩展 API 访问权限的 root 单元。没有 root = 没有 su 执行可能性(在大多数情况下,设备上根本没有 su 执行程序)

顺便说一句。甚至您的方法名称中都有“root”... runRootCommand