运行shell命令从Android应用程序文件复制(Running a shell command

2019-09-19 01:35发布

我试图让一个应用程序开始,所以我可以备份我的应用程序到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"

Answer 1:

Android不支持cp命令。 对于这一点,你必须要么使用cat命令( 从外壳只 )等,

cat source_file > dest_file

或者使用了BusyBox与您的应用程序。

编辑:

你也可以使用命令,

dd if=source_file of=dest_file


Answer 2:

这QA帮了我很多,所以我想添加一些不同的EXEC答案。 而不是使用调用Runtime.getRuntime()。EXEC(字符串),可以考虑使用调用Runtime.getRuntime()。EXEC(字符串[])。 这应该防止在你的文件系统造成严重破坏与空格的文件路径。

尝试

Process copy = Runtime.getRuntime().exec(
new String[]{
    "dd", 
    "if=" + inputFile.getAbsolutePath(), 
    "of=" + outputFile.getAbsolutePath()
});


文章来源: Running a shell command to copy files from Android App