【发布时间】:2017-08-07 11:00:19
【问题描述】:
我在我的 Android 应用程序中使用 Realm database。数据需要加密,我正在使用Realm的加密。他们的密钥来自服务器,然后存储在设备上,但使用用户 PIN 加密。
如果 - 以任何方式 - 密钥被调整,我想注销用户。我正在使用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没有被初始化的情况下怎么清除数据呢?当我测试它时,它不断启动
LoginActivity一次又一次,从未停止过。
我正在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 未正确解密时,如何以及在何处删除所有本地数据并注销用户?
【问题讨论】:
标签: android encryption realm local-storage realm-migration