android - 无法运行程序“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
}
解决方案
su
表示超级用户,这些命令仅适用于具有更高权限和一些扩展 API 访问权限的根单元。没有根 = 没有su
执行的可能性(在大多数情况下su
,设备上根本没有执行器)
顺便提一句。甚至您的方法名称中都包含“root”...runRootCommand
推荐阅读
- javascript - 防止默认不工作不断刷新网页和sendMessage也不工作
- css - 将样式添加到 AgGrid 中的特定标题单元格
- byte-buddy - ByteBuddy 中是否有任何方法可以将 TypeDescription.Generic 转换为适当的 java.lang.reflect.Type?
- flutter - Flutter 中的条件资产
- c++ - 需要帮助从文本文件中提取一行并将该行排序为多个变量
- java - 在命令提示符下运行 jar 文件时显示错误“JavaFX 运行时组件丢失,并且需要运行此应用程序”
- php - PHP 邮件程序返回错误 PHPMailer\PHPMailer\Exception: SMTP 错误:以下收件人失败:
- node.js - 如何制作 Node.js express API 的生产版本
- python - 我有一个 JSON 字典列表,我想检查其中一个 json 结构中的名称是否包含字符子集
- flutter - 删除listView中的textView