1

エラー:

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

コード:

new Thread(new Runnable() {

        public void run() {
            try {
                X509Certificate[] myCertificates=KeyChain.getCertificateChain(MainActivity.this, "ServerCertificate");
                if(myCertificates!=null)
                {
                    System.out.println("myCertificates size "+myCertificates.length);

                    for(int i=0;i<myCertificates.length;i++)
                    {
                        System.out.println("myCertificates i= "+i+"    "+myCertificates[i]);
                    }
                }
            } catch (KeyChainException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }).start();
4

1 に答える 1

6

このKeyChainクラスでは、アプリケーションがインストールされた後、またはchoosePrivateKeyAlias()を呼び出す前に、アプリケーションが少なくとも 1 回呼び出す必要があります。そのため、事前にエイリアスがわかっている場合でも、少なくとも 1 回は を呼び出す必要があります。そうしないと、アプリと使用する内部データベースの間に信頼が確立されません。getPrivateKey()getCertificateChain()choosePrivateKeyAlias()KeyChain

于 2012-12-10T16:18:38.293 に答える