使用 clear() 不工作删除 EncryptedSharedPreferences

elp*_*cko 12 android sharedpreferences kotlin androidx

我使用 androidx.security:security-crypto:1.0.0-alpha02 库中的 EncryptedSharedPreferences 来存储一些令牌。如果我使用prefs.edit().remove("token")).apply()prefs.edit().remove("token")).commit()令牌被删除。但是,如果我尝试使用该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

    )
}
Run Code Online (Sandbox Code Playgroud)

我是否必须以其他方式清除 EncryptedSharedPreferences?

文档说(https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences):

// 像往常一样使用共享首选项和编辑器 SharedPreferences.Editor editor = sharedPreferences.edit();

2020 年 2 月 7 日更新 我在 google bugtracker ( https://issuetracker.google.com/issues/138314232 ) 中创建了一个错误票,但他们不会修复它...

小智 1

此问题从版本1.0.0-rc03开始​​修复。Clear 现在工作正常。享受!

请参阅发行说明: https://developer.android.com/jetpack/androidx/releases/security#security-crypto-1.0.0-rc03