我正在尝试启动应用,因此我可以将我的应用备份到SD卡。我跑了:
Process p = Runtime.getRuntime().exec("su");
Process c = Runtime.getRuntime().exec(
"cp /data/app/com.ebay.mobile-1.apk"
+ Environment.getExternalStorageDirectory()
+ "/ebay.apk");
Log.d("copy", "done");
当它运行时,我可以授予超级用户然后它说已经完成但是没有文件没有被复制。我只是以eBay应用程序为例进行测试。
感谢您的帮助。
修复:感谢下面的帮助,但我找到了一个完整的解决方案,并在这里做了一些不同的做事方式“http://stackoverflow.com/questions/10735273/copy-folders-in-data-data-to-sdcard -viceversa?RQ = 1"
答案 0 :(得分:7)
Android不支持cp
命令。为此,您必须使用 cat 命令(仅限shell ),
cat source_file > dest_file
或者在您的应用程序中使用 BusyBox 。
修改强>
你也可以使用命令,
dd if=source_file of=dest_file
答案 1 :(得分:0)
这个QA给了我很多帮助,所以我想在各种exec答案中添加一些内容。而不是使用Runtime.getRuntime()。exec(String),请考虑使用Runtime.getRuntime()。exec(String [])。这应该可以防止带空格的文件路径对您的文件系统造成严重破坏。
尝试
Process copy = Runtime.getRuntime().exec(
new String[]{
"dd",
"if=" + inputFile.getAbsolutePath(),
"of=" + outputFile.getAbsolutePath()
});