检查设备上是否安装了特定证书
答
我在Android设备5.1.1
上使用它。
根据您想要检查它是否是您正在查找的证书的方式,您可以选择任何字段并进行比较。我采用了快速检查发行者专有名称(DN)的方法。
private boolean isCertificateInstalled(String issuerDn) {
try {
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init((KeyStore) null);
X509TrustManager xtm = (X509TrustManager) tmf.getTrustManagers()[0];
for (X509Certificate cert : xtm.getAcceptedIssuers()) {
if (cert.getIssuerDN().getName().contains(issuerDn)) {
return true;
}
}
} catch (NoSuchAlgorithmException | KeyStoreException e) {
// Handle exceptions
}
return false;
}
我把这个解决方案从this answer声称这应该也行预冰淇淋三明治。
确定一些更多的研究似乎是不可能的。它应该可以与Android 4.0 ICS,但不能与较低版本:( – Henry 2012-01-10 15:47:30