Ответа на этот вопрос сам я сделал Util класс, чтобы помочь миграции (unecncrypted файл -..> Encrpyted файл)
public class RealmEncryptionHelper {
private static final String ENCRYPTION_FILE_PREFIX = "encrypted_";
public static Realm createEncryptedRealm(Context context, RealmConfiguration.Builder builder) {
RealmConfiguration unencryptedConfig = builder.build();
RealmConfiguration encryptedConfig = builder.name(ENCRYPTION_FILE_PREFIX + unencryptedConfig.getRealmFileName())
.encryptionKey(AppSharedPreferences.getInstance(context).getRealmEncryptionKey())
.build();
migrationIfNeeded(unencryptedConfig, encryptedConfig);
return Realm.getInstance(encryptedConfig);
}
private static void migrationIfNeeded(RealmConfiguration unencryptedConfig, RealmConfiguration encryptedConfig) {
File unencryptedFile = new File(unencryptedConfig.getPath());
File encryptedFile = new File(encryptedConfig.getPath());
Realm unencryptedRealm = null;
if (!encryptedFile.exists() && unencryptedFile.exists()) {
try {
unencryptedRealm = Realm.getInstance(unencryptedConfig);
unencryptedRealm.writeEncryptedCopyTo(encryptedFile, encryptedConfig.getEncryptionKey());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (unencryptedRealm != null) {
unencryptedRealm.close();
}
}
}
}
}
Мое предположение: вам понадобится миграция (https://realm.io/docs/java/latest/#migrations). Когда вы выполняете эту операцию, вы можете настроить новый файл Realm с помощью конфигураций, которые вы хотели бы включить. – Orlando
@ Орландо Вы имеете в виду, что я должен изменить имя в области? Могу ли я сохранить имя незашифрованной области? – cinabro88
Нет, миграция позволяет создать новую базу данных Realm и скопировать данные из другой ранее существующей базы данных Realm. Вы выберете новое имя для создаваемой базы данных, но в конце имя не имеет значения. После переноса в зашифрованное Царство вы также можете изменить новое имя Realm, чтобы оно соответствовало предыдущему имени, которое находится на вас. – Orlando