android.security.KeyChainException: java.lang.IllegalStateException: uid <> 没有权限访问请求的别名

android.security.KeyChainException: java.lang.IllegalStateException: uid <> doesn't have permission to access the requested alias

我在旋转屏幕后重新创建 activity 时尝试获取之前选择的私钥时出现此错误。

我看到 this question here, 表明 choosePrivateKeyAlias() 需要被称为 "at least once after the application is installed"。在这种情况下,它被调用了很多次,包括应用程序在屏幕旋转发生之前启动时 - 那么为什么它被认为是一个新应用程序? uid 是否发生了某种变化?

调用如下:

PrivateKey privateKey = KeyChain.getPrivateKey(getBaseContext(), alias);

我刚刚注意到另一个问题使用的是 getCertificateChain 而不是 getPrivateKey - 这有区别吗?

为了后代,重复我的评论,问题是别名没有被正确存储,所以这个调用试图访问一个完全不相关或不存在的私钥。