我正在尝试以编程方式读取/写入root电话上/ data目录中的文件。 我首先 shell执行 su 以确保我的程序获得超级用户访问权限,这很正常。
我能够在我的程序中通过shell execs 命令读取/写入/ data中的文件,但是我得到“权限被拒绝”java.io.IOException使用Android文件或其他API。
如何使用API读取/写入root电话上的数据?这显然是可能的,因为像Root Explorer这样的程序可以做到这一点。
谢谢,
答案 0 :(得分:3)
简而言之,不,这不是严格可能通过API,因为您需要确保您的修改命令以root身份运行,否则操作系统将拒绝这些操作。
您需要将修改命令传递给su
命令,以便以root身份执行。
在他的github上,Chainfire提供sample implementation个Shell
类,您可以用它来执行rm
命令或任何其他命令,以root身份执行。< / p>
您可以通过编程方式执行此操作的方法是将要编辑的文件复制到临时目录,例如/sdcard/tmp.txt
,然后编辑该文件,然后将其复制回原始位置并覆盖那里有一个。
另一种方法是chmod
目标文件(即chmod 777 /data/xxx.txt
),以便您可以以编程方式读取/写入其内容。这就是您收到Permission denied
错误的原因,因为您的程序无权访问其他文件。这里的关键是您需要确保将chmod
命令本身传送到su
命令,以便不会拒绝THAT命令。我建议您阅读下面链接中的指南,因为它非常全面地说明了如何处理以root身份运行的情况。
来源:How-To SU
答案 1 :(得分:1)
通过编码,你可以添加像
这样的行Runtime.getRuntime().exec("chmod 077" +your_file_you_need_to_give_permission);