运行shell命令从Android App复制文件

时间:2012-07-03 16:01:21

标签: android shell process command root

我正在尝试启动应用,因此我可以将我的应用备份到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"

2 个答案:

答案 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()
});