首页 > 解决方案 > 无法运行程序“su”:错误=13,Android 应用程序中的权限被拒绝

问题描述

我的 DHCP 方法返回 flash。从 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
}

标签: androidwifi-direct

解决方案


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

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


推荐阅读