2017-07-07 30 views
1

我有一個android應用程序,在webview中調用一個安全的網站。 Web視圖檢索證書以將其提供給網站。如何在Android應用程序中防止choosePrivateKeyAlias對話框?

我必須使用KeyChain.choosePrivateKeyAlias(this, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS);方法,這顯示這樣

certificate select一個對話框

我要顯示該窗口只在用戶使用該應用程序的第一次,但我不不知道是否有可能。

我看到用設備/所有者配置文件截取此信息。這是否意味着它應該在Android的工作?這對我來說有點模糊。

另一種解決方案是將證書和私鑰首次保存到任何其他應用程序或用戶無法訪問的地方。我在私人模式下思考SharedPreferences。

我錯了嗎?

感謝您的支持!

回答

1

我不確定解決這個問題的好方法,但這是我做的,對我來說工作得很好。

我在首選項中檢查了一個布爾變量,如果false返回,我顯示choosPrivateKeyAlias窗口。 如果返回true,我知道我有權直接檢索證書,所以不需要顯示彈出窗口。

boolean isGranted = prefs.getBoolean("MY_CERT", false); 
if(!isGranted) { 
     //Get cert and private key from internal android store 
     KeyChainAliasCallback keyChainAliasCallback = new KeyChainAliasCallback() { 
      @Override 
      public void alias(@Nullable String s) { 
       Log.d(TAG, "selected alias = " + s); 
       SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
       editor.putBoolean("MY_CERT", true); 
       editor.commit(); 
       retriveCertsTask.execute(); 
      } 
     }; 
     KeyChain.choosePrivateKeyAlias(mActivity, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS); 
    } else { 
     // Retrieve certs an private key 
     retriveCertsTask.execute(); 
    } 

希望它可以幫助...

相關問題