Android 安卓钥匙链:对变化做出反应

Android 安卓钥匙链:对变化做出反应,android,keychain,android-broadcast,Android,Keychain,Android Broadcast,我正在使用Android在应用程序中存储私钥/证书 现在,如果用户(出于任何原因)从系统首选项中手动删除钥匙链中的条目,应用程序应根据该事件采取行动 当我生成的密钥链中的条目被删除时,我成功地获得了相应的广播操作\u密钥链\u更改 但是,我不知道如何通过编程检查广播是否真的是由于删除了KeyChain中的条目或其他条目而导致的。当然,我只希望应用程序在它真的是“它的”条目时做出反应 是否有人知道如何检查钥匙链中的特定条目(例如,使用alias=“xyz”)是否仍然存在 编辑1: 我已经尝试通过执

我正在使用Android在应用程序中存储私钥/证书

现在,如果用户(出于任何原因)从系统首选项中手动删除钥匙链中的条目,应用程序应根据该事件采取行动

当我生成的密钥链中的条目被删除时,我成功地获得了相应的广播
操作\u密钥链\u更改

但是,我不知道如何通过编程检查广播是否真的是由于删除了KeyChain中的条目或其他条目而导致的。当然,我只希望应用程序在它真的是“它的”条目时做出反应

是否有人知道如何检查钥匙链中的特定条目(例如,使用alias=“xyz”)是否仍然存在

编辑1:
我已经尝试通过执行以下操作来检查别名是否仍然存在,但在那里找不到它。它尝试键入“AndroidCAStore”(包含所有系统和用户CA证书,但没有来自KeyChain的任何证书)并键入“AndroidKeyStore”(没有条目)

也许我必须使用另一种类型的密钥库

val ks = KeyStore.getInstance("AndroidCAStore")
ks.load(null, null)
val containsAlias = ks.containsAlias("alias_of_the_entry_in_KeyChain")
编辑2: 好的,至少根据:

直接访问安卓密钥库的用户应用程序无法访问安卓密钥链存储的凭据,因此必须使用安卓密钥链API访问这些凭据


但是,我没有找到任何方法通过KeyChain API检查KeyChain中是否存在条目/别名。

KeyChain
API使用密钥库系统,因此我认为
KeyStore.containsAlias(别名)
应该可以工作。试试看。谢谢你的快速回复。我已经试过了,但可能我使用的密钥库实例类型不对。至少对于“AndroidCAStore”类型,我找不到我存储在钥匙链中的条目。