2015-12-09 13 views

Odpowiedz

3

Tak, musisz wykonać kopię pliku Realm za pomocą nowego klucza szyfrowania. Metoda nazywa writeEncryptedCopyTo(): https://realm.io/docs/java/latest/api/io/realm/Realm.html#writeEncryptedCopyTo-java.io.File-byte:A-

coś jak poniżej powinno dział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() 
+0

chciałbym zachować wymienić samo moja baza, więc piszę skopiować do pliku tymczasowego, a następnie usunąć oryginalny plik, a następnie zmień nazwę pliku tmp. Jednak Realm używa pamięci podręcznej konfiguracji na podstawie ścieżki. Czy istnieje sposób na zresetowanie tego? – Niko

+0

Moja bad, nie zamykała instancji realm wystarczająco wcześnie, aby ją usunąć :) – Niko