目前,我正在使用adb backup
命令执行应用程序的备份,我的设备通过micro usb电缆连接到我的电脑。该命令如下所示:
adb backup -f Backups/app.ab -noapk com.me.app
在我的备份文件夹中,哪个输出和android备份(ab)文件名为app.ab。
我想知道是否可以通过编程方式将应用程序备份到SD卡?我只需要定期备份应用程序及其数据库。
有关此问题的任何链接/文档都会有所帮助。
谢谢, 马特
答案 0 :(得分:2)
您无法从应用程序运行ADB
命令(如backup
),但您可以运行SHELL
命令(LINUX
命令从SHELL
内部运行{1}}),像这样 -
Process process = Runtime.getRuntime().exec("my_command");
如果您知道目标和目标文件夹,则可以使用cp
命令复制文件。
如果要阅读命令的结果,请使用
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
确保您的应用具有写入SD
的正确权限。
答案 1 :(得分:0)
阅读adb的源代码后(源:https://github.com/aosp-mirror/platform_system_core/blob/master/adb/daemon/services.cpp)。
我发现
/ system / bin / bu备份软件包名称
和
/ system / bin / bu恢复
是可用于备份和还原的shell命令。
不幸的是,如果没有超级用户访问权限,这对我的设备不起作用
仅以下代码适用于有根设备:
try {
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("/system/bin/bu backup all\n");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
} catch(Exception e) {}