Cómo Respaldar una Base de Datos a la Memoria MicroSD (Android)


¿Qué sucede si queremos que nuestra App respalde automáticamente una base de datos SQLite a la memoria microSD?

Las bases de datos SQLite son archivos completamente independientes y portátiles; uno puede simplemente copiar todo el archivo a la tarjeta microSD.

Sin embargo, podemos automatizar esta tarea utilizando el siguiente código:

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

        if (sd.canWrite()) {
            String currentDBPath = "//data//{nombre del paquete}//databases//{nombre de la BD actual}";
            String backupDBPath = "{nombre de la nueva BD}";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, 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) {
    }

Este código sirve y es útil tanto para teléfonos rooteados como para aquellos que no lo están.

Es importante considerar que una vez que el archivo esté en la tarjeta microSD, ya no será privado y podría representar una brecha de seguridad.

Cuéntanos, ¿te sirvió este código? Deja tu comentario y platícanos tu experiencia.

No hay comentarios:

Publicar un comentario