2017-07-07 11 views
1

私はwebviewで保護されたウェブサイトを呼び出すアンドロイドアプリを持っています。 webviewは証明書を取得してWebサイトに渡します。アンドロイドアプリでchoosePrivateKeyAliasダイアログを回避する方法は?

私はKeyChain.choosePrivateKeyAlias(this, keyChainAliasCallback, null, null, null, -1, CERT_ALIAS);メソッドを使用する必要があり、これは「私は、このウィンドウにユーザーがアプリを使用する唯一の最初の時間を表示したいと思いますが、私はドンこれ

certificate select

のようなダイアログが表示されますそれが可能かどうかはわかりません。

私はデバイス/所有者プロファイルでこれをインターセプトすることについて知りました。それはそれがアンドロイドの仕事にあるべきであることを意味しますか?それは私には少しぼやけている。

もう1つの解決策は、他のアプリやユーザーがアクセスできない場所で初めて証明書と秘密鍵を保存することです。プライベートモードでSharedPreferencesについて考える。

私は間違っていますか?

あなたのanwersに感謝!

答えて

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(); 
    } 

...それがお役に立てば幸い
関連する問題