从/ data /使用Root权限备份mmssms.db

时间:2012-04-17 07:30:38

标签: android

我正在尝试为自己编写一个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 /目录中的其他文件。谢谢你的时间。

1 个答案:

答案 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权限。