我正在一个有根的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权限但是还有其他我缺少的东西吗?我四处看看,据我所知,这应该有效。
感谢。
答案 0 :(得分:1)
您必须将参数引用到mkdir
,否则su
会认为/system/test
是用户名并且无法运行。
Process process = Runtime.getRuntime().exec("su -c \"mkdir /path/to/test\"");
由于文件系统的组织/安装方式,文件系统的某些区域(例如/system
)是只读的。 Root访问权限不会改变,您的命令仍然会失败。
要验证您是否可以执行的操作,请在设备上安装终端仿真程序并首先手动运行命令。