【发布时间】:2020-05-07 08:20:56
【问题描述】:
第一个活动
try {
masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);
sharedPreferences = EncryptedSharedPreferences.create(
"secret_shared_prefs",
masterKeyAlias,
getApplicationContext(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
} catch (GeneralSecurityException | IOException e) {
e.printStackTrace();
}
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("memberID", response.body().get(0).getMemberID().toString()).commit();
第二个活动
SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("secret_shared_prefs", MODE_PRIVATE);
sharedPreferences.getString("memberID", "unknown");
在同一个活动中,getSharedPreferences() 按预期工作。当尝试使用此代码访问另一个活动中的首选项时,它始终返回默认值。好像解密有问题。
【问题讨论】:
-
你能贴出你存储值的代码和你从 sharedPreferences 读取值的代码吗?
-
据我了解,EncryptedSharedPreferences 的读写方式与普通 SharedPreferences 相同,不同之处在于 ESP 键和值在存储中加密。因此,应该为您处理解密,您应该能够使用
sharedPreferences.getString("memberID", "unknown");正常获取字符串来源:proandroiddev.com/encrypted-preferences-in-android-af57a89af7c8 如果这不起作用,请更新。 -
是的,这就是我从文档中了解到的,但它似乎仍然无法使用来自另一个活动的 sharedPreferences.getString() 进行解密。我现在可能只是尝试实施替代方案。
标签: java android sharedpreferences encrypted-shared-preference