Я пытаюсь записать файл, сгенерированный моим приложением, в системный раздел. Поскольку я не могу создать FileOutputStream внутри моего приложения, я создаю файл в каталоге данных своего приложения, исправляю права доступа и затем перемещаю его в системный раздел.
В настоящий момент в приведенном ниже коде отсутствует записываемое перемонтирование / system - для целей тестирования я успешно выполнил этот шаг через adb remount
- поэтому это не должно быть проблемой.
Приложение также успешно получает права root.
Но приведенный ниже код не работает. Он только создает файл, но не перемещает его в системный раздел. В чем моя ошибка?
FileOutputStream out = openFileOutput("myfile.test", MODE_WORLD_READABLE);
File f = getFileStreamPath("myfile.test");
writeDataToOutputStream(out);
out.close();
String filename = f.getAbsolutePath();
Runtime r = Runtime.getRuntime();
r.exec("su");
// Waiting here some seconds does not make any difference
r.exec(new String[] { "chown", "root.root", filename });
r.exec(new String[] { "chmod", "644", filename });
r.exec(new String[] { "mv", filename, "/system/myfile.test" });