Резервное копирование /data/system/xxxx.bin на / sdcard - PullRequest
1 голос
/ 20 ноября 2011

Я довольно новичок в разработке apk. До сих пор, после покупки книги и большого количества Google, мне удалось создать приложение, которое контролирует некоторые функции моего пользовательского ПЗУ. В настоящее время я пытаюсь реализовать 2 функции резервного копирования. Я хочу сделать резервную копию /data/system/batterystats.bin в / sdcard, а также хочу сделать резервную копию launcher.db моего модуля запуска touchwiz в /sdcard.

Для первой части я ничего не нашел. Я много искал о том, как восстановить файл, мало что получилось. Это в основном о файлах .db SQL. Я также искал возможность запуска сценария оболочки через apk просто для выполнения этого резервного копирования. С сценарием оболочки это простая работа, но, делая это через .java, я, честно говоря, понятия не имею.

Кроме того, я пробовал довольно много кода для резервного копирования файла базы данных sqlite, но у меня ничего не получилось. Вот мой код для просмотра:

public class Backup extends Activity {
public void exportDB(){
    try {
        File sd = Environment.getExternalStorageDirectory();
        if (sd.canWrite()) {
            String currentDBPath = "data/data/com.sec.android.app.twlauncher/databases/launcher.db";
            String backupDBPath = sd + "/launcher.db";
            File currentDB = new File(currentDBPath);
            File backupDB = new File(backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
                }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

Я добавил разрешения на запись во внешнее хранилище, конечно в androidmanifest, но ничего не происходит. Нет ФК, он просто сидит и ничего не делает. И когда я проверяю свою SDCard, там ничего нет.

Любая помощь будет принята с благодарностью. Спасибо

1 Ответ

1 голос
/ 21 ноября 2011

Скачать RootTools (файл jar).

Затем вы можете запускать команды linux следующим образом:

RootTools.sendShell(command);

Например, для резервного копирования вы можете сделать:

RootTools.sendShell("cp -f /data/data/com.sec.android.app.twlauncher/databases/launcher.db /sdcard/directory/");

И для восстановления файла:

RootTools.sendShell("cp -f /sdcard/directory/launcher.db /data/data/com.sec.android.app.twlauncher/databases/");

cp - это команда копирования, а -f позволяет перезаписать файл, если он уже существует.

RootTools хороши, и для команд просто гуглите, как выполнять команды linux, а затем помещайте их в sendShell

Понятия не имею, как это сделать с помощью Java. Я лично считаю, что с помощью команд linux в 10 раз проще.

И заметьте, на самом деле хорошо получить местоположение SDCard, как это:
Environment.getExternalStorageDirectory();

, а затем добавьте оставшуюся информацию о месте хранения до конца этого.

...