私はAndroidアプリでRealm databaseを使用しています。データを暗号化する必要があり、Realm
の暗号化を使用しています。これらのキーはサーバーから送信され、デバイスに保存されますが、ユーザーPINを使用して暗号化されています。Realmの間違った暗号化キーでユーザーをログアウトします
私はいつでもユーザーをログアウトしたいと思います。私は
をいくつかの一般的な初期化のため
ParentActivity
クラスを使用して、以下のようにonCreate
の内側にそれを実行しようとしました、private void initRealm() { try { if(MyApplication.getInstance().isRelamInitialized) realm = Realm.getDefaultInstance(); } catch (IllegalStateException e) { e.printStackTrace(); deleteAllAndLogout(); } }
そして
deleteAllAndLogout
がpublic void deleteAllAndLogout() { session.logoutUser(); session.removeFbData(); RealmManager.deleteAll(realm); LoginManager.getInstance().logOut(); Intent intent = new Intent(this, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); finish(); }
、以下のように見える問題ています
Realm
がまだ初期化されていない場合、どのようにデータを消去するのですか?あなたはrealm
が初期化されていますか?私はそれをテストしたが、それは何度も何度もやり続けていた。
私はApplication
クラスでRealm
を初期化しています。
public void initRealm() {
String encryptedKey = new Session(getApplicationContext()).getStringForKey(Session.mainEncryptedKeyForEncryption);
String key = new Cipher(getApplicationContext()).decrypt(encryptedKey);
Realm.init(getApplicationContext());
config = new RealmConfiguration
.Builder()
.encryptionKey(key.getBytes())
.deleteRealmIfMigrationNeeded()
.name(DB_NAME)
.schemaVersion(DB_VERSION)
.build();
Realm.setDefaultConfiguration(config);
isRelamInitialized = true;
}
質問
方法とRealm
が正しく復号化されていない場合、私はすべてのローカルデータとログアウトユーザーを削除することができますか?