не удалять базу данных SQLITE-Android

Мне случилось создавать приложение, которое позволяло бы возвращать данные пользователя, переоборудовав ее в устройстве. Все apps, которые я создал заблаговременно, он поддерживает информацию в базе данных и информация теряется, когда desinstalo приложение. Существует какой-то безопасный способ поддерживать информацию о базе данных даже если app он отступитесь?. Большое спасибо

1
задан 13.01.2017, 20:43
0 ответов

То, что приходит в голову мне, состоит в том, чтобы мочь поддерживать в специфическом месте, и учитывать, в котором момент ты программируешь твою резервную копию и в desinstalar, и это устанавливать проверять, существует ли файл для sobreescribirlo. Здесь есть соединение секции backup. Я надеюсь, что он подает тебя http://www.latindevelopers.com/ivancp/2013/06/copia-de-seguridad-de-sqlite-a-la-unidad-sdcard-en-android/

1
ответ дан 03.12.2019, 17:41

Ты можешь реализовывать копию базы данных в твоем внешнем хранении но в другом маршруте, отличном от того, который использует твое приложение.

У примера, предполагая твое приложение есть package так называемый ямс "com.kevtho.app" , ты можешь использовать различный пакет, чтобы определять другой маршрут например:

если ты производишь этот маршрут:

String mypath = Environment.getExternalStorageDirectory().getPath() +
"/Android/data/com.kevtho.basededatos/misbd";

когда удаляет твое приложение этот маршрут, который содержал бы базу данных, она пребывала бы нетронутой.

В зависимости от количества данных, если они значительные, или это более чувствительная информация ты мог бы считать тратить Веб Service.


То, что упоминает об этой статье: Резервная копия sqlite в единицу sdcard в Android, функционирует, но важно, чтобы ты сменил имя пакета на один, различный от пакета твоего приложения для того, чтобы, когда он исчезнет, не были удалены данные.

public void backupdDatabase(){
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();
        String packageName  = "com.yourapp.package";
        String sourceDBName = "mydb.db";
        String targetDBName = "mydb";
        if (sd.canWrite()) {
            Date now = new Date();
        String currentDBPath = "data/" + packageName + "/databases/" + sourceDBName;
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm"); 
        String backupDBPath = targetDBName + dateFormat.format(now) + ".db";

        File currentDB = new File(data, currentDBPath);
        File backupDB = new File(sd, backupDBPath);

        Log.i("backup","backupDB=" + backupDB.getAbsolutePath());
        Log.i("backup","sourceDB=" + currentDB.getAbsolutePath());

        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) {
        Log.i("Backup", e.toString());
    }
}
1
ответ дан 03.12.2019, 17:41

Теги

Похожие вопросы