android.security.KeyChainException:java.lang.IllegalStateException:uid <>无权访问所请求的别名

Tom*_* H. 6 java security android keychain

当我在旋转屏幕后重新创建活动时尝试获取先前选择的私钥时,我收到此错误.

我在这里看到了这个问题,这表明choosePrivateKeyAlias()需要在安装应用程序后"至少调用一次".在这种情况下,它被多次调用,包括在屏幕旋转发生之前启动应用程序时 - 为什么它被认为是一个新的应用程序?uid是以某种方式改变的吗?

这是电话:

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

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

F. *_*n Q 7

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