Выполнение команды оболочки для копирования файлов из приложения Android

Я пытаюсь запустить приложение, чтобы сделать резервную копию своих приложений на SDCard. Я побежал:

        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://stackru.com/questions/10735273/copy-folders-in-data-data-to-sdcard-viceversa? RQ =1"

2 ответа

Android не поддерживает cp команда. Для этого вы должны использовать команду cat (только из оболочки), например,

cat source_file > dest_file

Или используйте BusyBox с вашим приложением.

РЕДАКТИРОВАТЬ:

также вы можете использовать команду,

dd if=source_file of=dest_file

Этот QA очень помог мне, поэтому я хотел добавить что-то к различным ответам exec. Вместо использования Runtime.getRuntime (). Exec(String) рассмотрите возможность использования Runtime.getRuntime (). Exec(String[]). Это должно предотвратить разрушение путей файлов с пробелами в вашей файловой системе.

Пытаться

Process copy = Runtime.getRuntime().exec(
new String[]{
    "dd", 
    "if=" + inputFile.getAbsolutePath(), 
    "of=" + outputFile.getAbsolutePath()
});
Другие вопросы по тегам