Android 为VPN和应用程序安装证书
我试图要求用户安装证书,但我只想在VPN和应用程序上安装证书,而不是在Wi-Fi上 该对话框显示用户可以选择的两个选项,如中所示 到目前为止,我找不到任何可以强制VPN和应用程序选项只显示的选项 我这样调用证书安装:Android 为VPN和应用程序安装证书,android,certificate,Android,Certificate,我试图要求用户安装证书,但我只想在VPN和应用程序上安装证书,而不是在Wi-Fi上 该对话框显示用户可以选择的两个选项,如中所示 到目前为止,我找不到任何可以强制VPN和应用程序选项只显示的选项 我这样调用证书安装: Intent clientCertInstall = KeyChain.createInstallIntent(); clientCertInstall.putExtra(KeyChain.EXTRA_CERTIFICATE, __CERT_ENCODING__); clie
Intent clientCertInstall = KeyChain.createInstallIntent();
clientCertInstall.putExtra(KeyChain.EXTRA_CERTIFICATE, __CERT_ENCODING__);
clientCertInstall.putExtra(KeyChain.EXTRA_NAME, __NAME__);
activity.startActivityForResult(clientCertInstall, __CODE__);
此外,如果用户安装了证书,应用程序将收到ActivityResult上的信息,但意图将为null,结果代码为-1,不会告诉我用户是否选择WIFI或VPN和应用程序
onActivityResult(int requestCode, int resultCode, Intent data)
最后,如果用户通过Wi-Fi安装证书,我无法在密钥库别名下找到它,如下所示:
KeyStore ks = KeyStore.getInstance("AndroidCAStore");
Eumeration aliases = ks.aliases();
while (aliases.hasMoreElements()) {
String alias = (String) aliases.nextElement();
X509Certificate cert = (X509Certificate) ks.getCertificate(alias);
BigInteger localCertSerialNumber = cert.getSerialNumber();
String localIssuerDN = cert.getIssuerX500Principal().getName();
BigInteger serial = new BigInteger(currentCertificateSerial);
if (installedCertSerialNumber.compareTo(localCertSerialNumber) == 0 && installedCertIssuerDn.equals(localIssuerDN)) {
//Should reach here but it does not when user installs certificate via Wi-Fi
}
}
我做错什么了吗?你解决这个问题了吗?不,还没有,直到现在我还找不到任何可以帮助你解决这个问题的东西吗?不,还没有,直到现在我还找不到任何可以帮助我的东西