как программно установить сертификат ЦС на Android без взаимодействия с пользователем

Я пытаюсь установить сертификаты без запроса пользователя. Я знаю, что это не очень хорошая практика, но именно этого хочет премьер-министр.

Использование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) {

18
задан OneWorld 3 March 2016 в 10:14
поделиться