Cómo instalar el certificado de CA programáticamente en Android sin interacción del usuario

Estoy tratando de instalar certificados sin preguntarle al usuario. Sé que esto no es una buena práctica, pero eso es lo que quiere el primer ministro.

UtilizandoKeyChain.createInstallIntent(), Puedo hacer que Android inicie el cuadro de diálogo de instalación de certificados llamandostartActivity. Sin embargo, cuando paso la intención desendBroadcast, no pasa nada. Tal vez la plataforma no soporta esto por razones de seguridad?

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) {

Respuestas a la pregunta(6)

Su respuesta a la pregunta