我使用androidx.security:security-crypto:1.0.0-alpha 02 lib中的EncryptedSharedPreferences来存储一些令牌。如果我使用prefs.edit().remove("token")).apply()
或prefs.edit().remove("token")).commit()
,令牌将被删除。但是如果我尝试用clear()
方法一次清除prefs,什么也没有发生。
这个调用: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):
//像平常一样使用共享偏好和编辑器SharedPreferences.Editor editor = sharedPreferences.edit();
更新07.02.2020我在谷歌bugtracker(https://issuetracker.google.com/issues/138314232)中创建了一个错误票证,但他们不会修复它...
5条答案
按热度按时间kcugc4gi1#
此问题从版本1.0.0-rc 03修复。Clear现在工作正常。好好享受吧!
参考发布说明:https://developer.android.com/jetpack/androidx/releases/security#security-crypto-1.0.0-rc03
i7uq4tfw2#
也适用于不同的活动!
字符串
3pvhb19x3#
更新:正如Jeevanandham所指出的,这个问题已经修复。现在有一个稳定的版本。https://developer.android.com/jetpack/androidx/releases/security#version_100_3
原文回答:
一种解决方案是使用标准的、不安全的首选项管理器来清除首选项。
第一个月
这将清除所有首选项。
mwkjh3gx4#
原来这是图书馆的bug。它不能一次清除所有键。https://developer.android.com/jetpack/androidx/releases/security#security-crypto-1.0.0-rc03
因此,简单的解决方案是调用共享首选项而不加密示例。
字符串
wwtsj6pe5#
暂使用Remove方法:
字符串