Выполнение команды оболочки для копирования файлов из приложения 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()
});