База данных Realm Restore - PullRequest
       70

База данных Realm Restore

0 голосов
/ 23 сентября 2019

Я использую базу данных области для своего приложения. Я могу создать резервную копию файла области

Код резервного копирования:

public void backup() {
    // First check if we have storage permissions
    checkStoragePermissions(activity);
    File exportRealmFile;

    Log.d(TAG, "Realm DB Path = " + realm.getPath());

    EXPORT_REALM_PATH.mkdirs();

    // create a backup file
    exportRealmFile = new File(EXPORT_REALM_PATH, EXPORT_REALM_FILE_NAME);

    // if backup file already exists, delete it
    exportRealmFile.delete();
    SharedPreferences pref = activity.getApplicationContext().getSharedPreferences("key", 
   Context.MODE_PRIVATE);
    String enryptedKeyB64 = pref.getString("key", null);
    byte[] encryptedKey = Base64.decode(enryptedKeyB64, Base64.DEFAULT);
    // copy current realm to backup file
    realm.writeEncryptedCopyTo(exportRealmFile,encryptedKey);

    String msg = "File exported to Path: " + EXPORT_REALM_PATH + "/" + 
   EXPORT_REALM_FILE_NAME;
    Toast.makeText(activity.getApplicationContext(), msg, Toast.LENGTH_LONG).show();
    Log.d(TAG, msg);
    realm.close();
    }

Код моего восстановления:

 public void restore() {
    checkStoragePermissions(activity);
    //Restore
    realm.close();
    Realm.deleteRealm(realmConfiguration);
    SharedPreferences pref = activity.getApplicationContext().getSharedPreferences("key", 
    Context.MODE_PRIVATE);
    String enryptedKeyB64 = pref.getString("key", null);
    byte[] encryptedKey = Base64.decode(enryptedKeyB64, Base64.DEFAULT);
   RealmConfiguration  backupConfig =
            new RealmConfiguration.Builder()
                    .encryptionKey(encryptedKey)
                    .schemaVersion(0)
                    .migration(new HealthPassportMigration())
                    .build();
    String realmPath = new File(activity.getFilesDir(), "default.realm").getAbsolutePath();
    Realm backupRealm = Realm.getInstance(backupConfig);
    backupRealm.writeEncryptedCopyTo(new File(realmPath),encryptedKey);
    backupRealm.close();
   // realm = Realm.getInstance(realmConfiguration);
}

Я не могу восстановить свою базу данных после выполнения вышеуказанного кода, база данных пуста, данные не восстанавливаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...