我使用androidx.security:security-crypto:1.0.0-alpha02 lib中的EncryptedSharedPreferences来存储一些 token 。如果我使用prefs.edit().remove("token")).apply()
或prefs.edit().remove("token")).commit()
,则 token 将被删除。但是,如果我尝试使用clear()
方法立即清除首选项,则不会发生任何事情。
此调用:prefs.edit().clear().commit()
甚至返回false
。
我使用以下方法获取EncryptedSharedPreferences:
private fun getPrefs(): SharedPreferences {
val masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)
return EncryptedSharedPreferences.create(
"myPrefs",
masterKeyAlias,
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
}
我是否必须以其他方式清除EncryptedSharedPreferences?
该文件说
(https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences):
更新2020年2月7日
我在Google Bugtracker(https://issuetracker.google.com/issues/138314232)中创建了一个故障单,但他们无法修复它。
最佳答案
一种解决方案是使用标准的非安全首选项管理器清除首选项。PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply();
这将清除所有首选项。