You can only install certificates silently if you have system privileges. Showing up a confirmation dialog is intentional, since trusting certificates can have serious consequences — Android could happily open phishing sites without a warning, etc. That said, the dialog in ICS/JB is pretty bad — it doesn’t tell you what certificate you are installing and who issued it, just that it’s a CA certificate, which is kind of obvious.
So, either use the public KeyChain
API and use startActivity()
to get the confirmation dialog, or pre-provision devices before handling them to users.
Update: In Android 4.4, DevicePolicyManager
has a hidden API (installCaCert
) that allows you to install certificates silently. You need the MANAGE_CA_CERTIFICATES
permission, which is signature|system
, so still not doable for user-installed apps.