当我在旋转屏幕后重新创建 Activity 时尝试获取之前选择的私钥时,出现此错误。
我看过 this question here,这表明 choosePrivateKeyAlias()
需要“在安装应用程序后至少调用一次”。在这种情况下,它被调用了很多次,包括应用程序在屏幕旋转发生之前启动时 - 那么为什么它被认为是一个新应用程序? uid 是否发生了某种变化?
调用如下:
PrivateKey privateKey = KeyChain.getPrivateKey(getBaseContext(), 别名);
我刚刚注意到另一个问题是使用 getCertificateChain
而不是 getPrivateKey
- 这有区别吗?
最佳答案
为了后代,并重复我的评论,问题是别名没有被正确存储,所以这个调用试图访问一个完全不相关或不存在的私钥。
关于java - android.security.KeyChainException : java. lang.IllegalStateException: uid <> 没有权限访问请求的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46363280/