【问题标题】:Android root commands not working in applicationAndroid root 命令在应用程序中不起作用
【发布时间】:2023-04-08 15:19:02
【问题描述】:

我在 Nexus 7 平板电脑上尝试了一些 shell 命令,我发现只有看起来不需要 root 权限的命令才会被执行。

例如,如果我调用:

  Process process = Runtime.getRuntime().exec("su -c mkdir /sdcard/test");

目录已创建。但如果我打电话:

  Process process = Runtime.getRuntime().exec("su -c mkdir /system/test");

什么都没有发生。

(我尝试了各种命令,并尝试了各种不同的语法以防出现问题,但只有我不需要 root 访问权限才能执行的命令)

当我尝试执行此命令时,我从 SuperUser 获得弹出窗口并授予我的应用程序 root 权限,但是我还缺少其他什么吗?我环顾四周,据我所知,这应该可行。

谢谢。

【问题讨论】:

    标签: android shell command root


    【解决方案1】:
    1. 您必须将参数引用到mkdir,否则su 将假定/system/test 是用户名并且无法运行。

      Process process = Runtime.getRuntime().exec("su -c \"mkdir /path/to/test\"");

    2. 由于文件系统的组织/安装方式,文件系统的某些区域(例如 /system)是只读的。根访问不会改变这一点,您的命令仍然会失败。

    要验证您尝试执行的操作是否可行,请在设备上安装终端模拟器并先手动运行命令。

    【讨论】:

    • 好的,谢谢!我真正想做的是使用“mount”命令来安装连接的 USB OTG 设备。由于文件系统,这将是不可能的吗?当我插入设备时,会在 /dev/bus/usb/001 创建一个文件。有没有办法调用 mount 并将其挂载到文件系统?
    • 您可以使用mount /dev/bus/usb/001 /mnt/foo 之类的方式挂载它,但在将命令传递给su 时请注意引用。
    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 2018-08-25
    • 2019-03-03
    • 2015-07-11
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多