【问题标题】:Cannot run program "su ": error=13, Permission denied in Android Application无法运行程序“su”:错误=13,Android 应用程序中的权限被拒绝
【发布时间】:2021-01-14 05:54:57
【问题描述】:

我的 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
}

【问题讨论】:

  • 你有root设备吗?
  • 不,我的设备没有root

标签: android wifi-direct


【解决方案1】:

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

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

【讨论】:

  • 在这种情况下,dhcp 方法中的命令是什么...??请告诉我...!!谢谢
  • 这是一个不同的问题,我建议您使用格式正确的问题、您的所有需求和尝试过的方法来创建新主题。就我个人而言,我在 Android 的上下文中没有太多与 DHCP 相关的知识,但我怀疑你是否可以在没有 root 的情况下实现你想要的......我怀疑创建自己的假 VPN 的唯一方法可能有点丑陋应用程序,它实际上会再见操纵路由,但这只是一个猜测......
猜你喜欢
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 2015-07-16
  • 2011-03-06
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多