我想将一些文件从它自己的数据文件夹(例如" /data/data/com.example.copy /")复制到" / data / local / TMP /&#34 ;.我无法在我的应用中访问/ data / local / tmp /。有可能吗? 我的设备上没有root权限。
这是我的代码:
Process p=Runtime.getRuntime().exec("cat "+ this.getApplicationInfo().dataDir +"1.txt > /data/local/tmp/1.txt" );
p.waitFor();
答案 0 :(得分:5)
不,你不能从一个应用程序执行此操作,除非你的设备有类似被黑客su
的东西,它允许你作为一个更有特权的用户运行一个帮助程序进程(即,除非它是" rooted&#34 ;)
您应该将文件放在其他位置 - 例如外部存储。 (如果允许adb shell在/ data / local / tmp下创建目录,你可以在那里创建一个目录,chmod或chown它可以让你的应用程序访问,但是这个版本不可移植)
或者,如果您只是试图公开它,请更改访问权限(有人可能会出现并指出用于设置文件全局可读的java常量表面上已被弃用,但实际禁用该功能需要进行大幅更改底层操作系统)