¿Cómo eliminar el certificado instalado por el usuario mediante programación?
Había instalado un certificado programmatically.
Puedo desinstalarlo manualmente al ir Settings -> Security -> Trusted Credentials -> User -> Choose the certificate and click the remove button
- Determinar el ancho de una cadena en una fuente determinada
- Android: onListItemClick en la actividad
- ¿Cómo implementar una pantalla de bienvenida con una barra de progreso? androide
- Com.android.ant.SetupTask no se puede encontrar
- ServiceTestCase <T> .getService?
Quiero quitar el certificado mediante programación.
Aquí está el código que intenté pero no funcionó.
javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes); KeyStore ks = KeyStore.getInstance("AndroidCAStore") if (ks != null) { ks.load(null, null); Enumeration<String> aliases = ks.aliases(); while (aliases.hasMoreElements()) { String alias = (String) aliases.nextElement(); java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias); String name = x509.getIssuerDN().getName(); if (cert.getIssuerDN().getName().contains(name)) { ks. deleteEntry(alias) } } }
Ref para saber por qué elegí deleteEntry
Aquí está el registro de errores que recibí
05-19 18:27:40.789: W/System.err(14588): java.lang.UnsupportedOperationException 05-19 18:27:40.792: W/System.err(14588): at com.android.org.conscrypt.TrustedCertificateKeyStoreSpi.engineDeleteEntry(TrustedCertificateKeyStoreSpi.java:82) 05-19 18:27:40.792: W/System.err(14588): at java.security.KeyStore.deleteEntry(KeyStore.java:410) 05-19 18:27:40.792: W/System.err(14588): at com.proj.test.MyActivity$4.onClick(MyActivity.java:336) 05-19 18:27:40.792: W/System.err(14588): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162) 05-19 18:27:40.792: W/System.err(14588): at android.os.Handler.dispatchMessage(Handler.java:102) 05-19 18:27:40.792: W/System.err(14588): at android.os.Looper.loop(Looper.java:135) 05-19 18:27:40.793: W/System.err(14588): at android.app.ActivityThread.main(ActivityThread.java:5254) 05-19 18:27:40.793: W/System.err(14588): at java.lang.reflect.Method.invoke(Native Method) 05-19 18:27:40.794: W/System.err(14588): at java.lang.reflect.Method.invoke(Method.java:372) 05-19 18:27:40.794: W/System.err(14588): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 05-19 18:27:40.794: W/System.err(14588): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Esta pregunta está algo relacionada con mi otra pregunta
Cualquier ayuda es apreciada!
- Cómo agregar una sombra y un borde en circular imageView android?
- Cómo utilizar el widget de NumberPicker Android 4.0
- La aplicación no está configurada correctamente para utilizar los servicios de juego de Google
- Cómo ejecutar la tarea asíncrona para un tiempo de espera establecido?
- Android Design Navigation Drawer - ¿Cómo agregar un conmutador en el navegador xml?
- Android (Java) Simple Enviar y recibir con el servidor - Desafío de configuración rápida
- AutoCompleteTextView fuerza para mostrar todos los elementos
- Error de ThreeTen-Backport en Android - ZoneRulesException: No se registraron archivos de zona horaria
Parece que la implementación de la interfaz KeyStoreSpi simplemente no admite la eliminación:
@Override public void engineDeleteEntry(String alias) { throw new UnsupportedOperationException(); }
Puede hacerlo en Android 5.x con un propietario de dispositivo mediante el método uninstallCaCert()
. Un propietario de dispositivo sólo se puede instalar antes de que el dispositivo se aprovisione.
- Android -> cómo animar a la nueva posición
- Camera setDisplayOrientation () en el modo de retrato rompe la relación de aspecto