0

此页面上描述了android如何能够选择所有用户证书并在微调器中显示它们...... http://source-android.frandroid.com/packages/apps/Settings/src/com/android/settings/ vpn2/VpnDialog.java

他们使用方法:

private void loadCertificates(Spinner spinner, String prefix, int firstId, String selected) {
    Context context = getContext();
    String first = (firstId == 0) ? "" : context.getString(firstId);
    String[] certificates = mKeyStore.saw(prefix);

    if (certificates == null || certificates.length == 0) {
        certificates = new String[] {first};
    } else {
        String[] array = new String[certificates.length + 1];
        array[0] = first;
        System.arraycopy(certificates, 0, array, 1, certificates.length);
        certificates = array;
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            context, android.R.layout.simple_spinner_item, certificates);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    for (int i = 1; i < certificates.length; ++i) {
        if (certificates[i].equals(selected)) {
            spinner.setSelection(i);
            break;
        }
    }
}

用这个电话:

loadCertificates(mIpsecUserCert, Credentials.USER_CERTIFICATE,
            0, mProfile.ipsecUserCert);

现在他们使用 Credentials.USER_CERTIFICATE 作为方法 mKeyStore.saw(String prefix)

这正是我要找的,但我不能调用方法 saw 并且它也没有在 android api 中提到......

那么有没有办法让我得到同样的结果?

密钥库库无法区分用户或系统证书,如果我想将所有证书放在下拉列表中,这将花费我大量的加载时间。键入证书的主题名称并循环遍历所有证书直到正确的另一种方法对于非 IT 人员来说并不实际,因此对于普通用户来说处理起来很糟糕......

网上几乎没有关于这个话题的参考资料,这就是为什么我只在这篇文章上询问 google android pro 的原因。

谢谢你

4

1 回答 1

0

这是一个私有 API,它不能被第三方应用程序使用。为什么要选择用户证书?您通常需要用户的私钥,而 KeyChain API 支持让用户选择其中之一。

于 2012-04-17T02:09:08.360 回答