Я использую базу данных области для своего приложения. Я могу создать резервную копию файла области
Код резервного копирования:
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);
}
Я не могу восстановить свою базу данных после выполнения вышеуказанного кода, база данных пуста, данные не восстанавливаются.