【发布时间】:2013-09-09 10:21:23
【问题描述】:
我可以轻松地从 adb shell 使用“rm /data/system/[file]”,但从应用程序这不起作用。
命令“du”、“ls”、“echo”在代码中工作正常,但命令“rm”不起作用。它甚至不适用于 sdcard。
我尝试过的代码:
1)
String[] cmd = { "/system/bin/sh", "-c", "rm -r /sdcard/1" };
try {
Process process = Runtime.getRuntime().exec(cmd);//execute command
//read the output of command
InputStreamReader reader = new InputStreamReader(process.getInputStream());
.....
2) 与 (1) 相同的代码,用“su”代替“/system/bin/sh”
3)
process=Runtime.getRuntime().exec("/system/bin/sh");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("rm -r /sdcard/1\n");
os.flush();
os.writeBytes("exit\n");
os.flush();
process.waitFor();
4) 与 (3) 相同的代码,用 'su' 代替 '/system/bin/sh'
【问题讨论】:
-
试过使用
delete吗? docs.oracle.com/javase/7/docs/api/java/nio/file/… -
java.nio.file.Files 似乎无法访问。我尝试了 java.io.File,但它的删除功能不起作用。
-
您的应用程序是该文件的所有者吗?
-
不,不是。它是一个系统文件,来自'/data/system/'。不能root允许访问这个目录吗?
-
没有。
adb shell是一个开发工具,只有打开 USB 调试才能工作。不要依赖那个设置。