我正在尝试为自己编写一个Android应用程序,只需将位于/data/data/com.android.providers.telephony/databases/mmssms.db的文件复制到我的SD卡上的某个位置,/ sdcard / test /mmssms.db
设备已植根,应用程序已被授予超级用户访问权限,但文件从未实际复制过。目标目录确实存在,应用程序的SDK为1.5。以下是用于执行备份的命令。
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("mount -o rw,remount -t yaffs2 /data/data/com.android.providers.telephony/databases /data");
Runtime.getRuntime().exec("chmod -R 777 /data/data/com.android.providers.telephony/databases");
Runtime.getRuntime().exec("cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/test/mmssms.db");
Manifest xml中使用了以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我想知道我能做些什么来复制该文件和/ data /目录中的其他文件。谢谢你的时间。
答案 0 :(得分:0)
我有完全相同的问题,我似乎无法在应用中使用它。有关您的代码段的一些有用说明:
将这些命令作为对Runtime.getRuntime()。exec()的单独调用运行是没有意义的,因为exec的每次调用都会启动一个与您的应用程序具有相同priveledges的新子进程。运行exec(“su”)不会为以下命令(mount,chmod等)提供root权限,因为它们是新进程。你需要做exec(“su -c'命令'”)
运行“mount -o rw ....”不是必需的,因为你只是从这个分区读取而不是写入它。
我有兴趣看看有没有人解决过这个问题。使用ES文件资源管理器(具有root访问权限)复制文件可以正常运行。我也可以通过USB从PC上使用根ADB shell复制文件。我的应用程序还在Manifest.xml中设置了WRITE_EXTERNAL_STORAGE权限。