2015-12-09 26 views
5

私のアプリケーションにはRealmというデータベースが暗号化されています。私は暗号化キーを変更したいと思います。新しい暗号化キーを使用してRealmファイルのコピーを作成する適切な方法ですか、別のオプションがありますか?レルムの暗号化キーの更新/変更

ありがとうございました。

答えて

3

はい、新しい暗号化キーを使用してレルムファイルのコピーを作成する必要があります。この方法は、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() 
+0

その後、私は同じ名前を付ける私のデータベースを維持したいと思いますので、私は一時ファイルにコピーを書き込み、その後、元のファイルを削除し、 tmpファイルの名前を変更します。ただし、Realmはパスに基づいた構成キャッシュを使用します。それをリセットする方法はありますか? – Niko

+0

私の悪い、それを取り除くために十分早く領域のインスタンスを閉じていなかった:) – Niko

関連する問題