czy jest możliwe tworzenie kopii zapasowych i przywracanie pliku bazy danych w Androidzie? urządzenia non root [duplikat]

To pytanie ma już odpowiedź tutaj:

W mojej aplikacji potrzebuję kopii zapasowej bazy danych, ale po tym, jak będę potrzebował przywrócić go ponownie,

Czytałem coś, ale nie wiem, czy jest to konieczne, aby mieć zakorzenione urządzenie, potrzebuję kopii zapasowej / przywrócić wszystkie dane w urządzeniach innych niż root, czy to możliwe?

Moim pierwszym pomysłem było stworzenie pliku txt do zapisu select, a później wstaw go ponownie.

Ale wierzę, że jest to dużo "problem", a następnie Nie wiem, czy jest to możliwe skopiować bazę danych i wklej na karcie sd do kopii zapasowej, i skopiować z karty sd i wklej w ścieżce bazy danych do przywrócenia dla urządzeń non root.

Author: Cœur, 2013-08-20

1 answers

Oto jakiś kod aby to działało

private void importDB() {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
                if (sd.canWrite()) {
                String currentDBPath = "//data//" + "<package name>"
                        + "//databases//" + "<database name>";
                String backupDBPath = "<backup db filename>"; // From SD directory.
                File backupDB = new File(data, currentDBPath);
                File currentDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(backupDB).getChannel();
            FileChannel dst = new FileOutputStream(currentDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getApplicationContext(), "Import Successful!",
                    Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {

        Toast.makeText(getApplicationContext(), "Import Failed!", Toast.LENGTH_SHORT)
                .show();

    }
}

private void exportDB() {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//" + "<package name>"
                    + "//databases//" + "<db name>";
            String backupDBPath = "<destination>";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getApplicationContext(), "Backup Successful!",
                    Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {

        Toast.makeText(getApplicationContext(), "Backup Failed!", Toast.LENGTH_SHORT)
                .show();

    }
}
 30
Author: adefran83,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 21:19:23