ユーザーにプロンプトを表示せずに証明書をインストールしようとしています。これが良い慣行ではないことはわかっていますが、それが首相の望みです。
を使用してKeyChain.createInstallIntent()
、Android に を呼び出して証明書のインストール ダイアログを起動させることができますstartActivity
。ただし、インテントを に渡すとsendBroadcast
、何も起こりません。セキュリティ上の理由から、プラットフォームがこれをサポートしていない可能性がありますか?
String CERT_FILE = Environment.getExternalStorageDirectory() + "/test/IAT.crt";
Intent intent = KeyChain.createInstallIntent();
try {
FileInputStream certIs = new FileInputStream(CERT_FILE);
byte [] cert = new byte[(int)certFile.length()];
certIs.read(cert);
X509Certificate x509 = X509Certificate.getInstance(cert);
intent.putExtra(KeyChain.EXTRA_CERTIFICATE, x509.getEncoded());
intent.putExtra(KeyChain.EXTRA_NAME, "IAT Cert");
EapActivity.this.startActivityForResult(intent, 0); // this works but shows UI
EapActivity.this.sendBroadcast(intent); // this doesn't install cert
} catch (IOException e) {