Да, вы должны сделать копию файла Realm с новым ключом шифрования. Метод называется writeEncryptedCopyTo()
: https://realm.io/docs/java/latest/api/io/realm/Realm.html#writeEncryptedCopyTo-java.io.File-byte:A-
Что-то вроде ниже должно работать:
RealmConfiguration config1 = new RealmConfiguration.Builder(context)
.name("old-name")
.encryptionKey(getOldKey())
.build()
Realm realm = Realm.getInstance(config1);
realm.writeEncryptedCopyTo(new File(context.getFilesDir(), "new-name"), getNewKey());
realm.close();
RealmConfiguration config2 = new RealmConfiguration.Builder(context)
.name("new-name")
.encryptionKey(getNewKey())
.build()
Я хотел бы, чтобы моя база данных имя же, поэтому я пишу скопировать временный файл, а затем удалить исходный файл, а затем переименовать tmp-файл. Однако Realm использует кеш конфигурации на основе пути. Есть ли способ сбросить это? – Niko
Плохо, не закрывал экземпляр царства достаточно рано, чтобы удалить его :) – Niko