在有根的Android设备上读取/写入/ data中的文件

我试图以编程方式读取/写入root电话上的/ data目录中的文件.
我首先shell执行su以确保我的程序获得超级用户访问权限,这很好.

我能够在我的程序中读取/写入/ data thru shell execs命令中的文件,但是当使用Android文件或其他API时,我得到“Permission denied”java.io.IOException.

如何使用API​​读取/写入root电话上的数据?这显然是可能的,因为像Root Explorer这样的程序可以做到这一点.

谢谢,

解决方法:

简而言之,不,这不是严格可能通过API,因为您需要确保您的修改命令以root身份运行,否则操作系统将拒绝这些操作.

您需要将修改命令传递给su命令,以便它以root身份执行.在他的github上,Chainfire提供了一个sample implementation的Shell类,您可以使用它来以root身份执行rm命令或任何其他命令.

以编程方式执行此操作的一种方法是将您要编辑的文件复制到临时目录,例如/sdcard/tmp.txt,然后编辑该文件,然后将其复制回原始位置并覆盖那里的那个.

另一种方法是chmod目标文件(即chmod 777 /data/xxx.txt),以便您可以以编程方式读取/写入其内容.这就是为什么您收到Permission denied错误的原因,因为您的程序没有访问其他文件的权限.这里的关键是你需要确保chmod命令本身被传送到su命令,以便不会拒绝THAT命令.我建议您阅读下面链接中的指南,因为它非常全面地说明了如何处理以root身份运行的情况.

资料来源:How-To SU

上一篇:fatal: Authentication failed for又不弹出用户名和密码 解决办法


下一篇:error response from daemon: pull access denied for xx,repository does not exisor may require docker