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);

現在、メソッドmKeyStore.saw(String prefix)にCredetials.USER_CERTIFICATEを使用しています。

それはまさに私が探しているものですが、私はメソッドsawを呼び出すことができず、AndroidAPIにも記載されていません...

それで、どういうわけか私のために同じ結果を得る方法はありますか?

キーストアライブラリは、ユーザー証明書またはシステム証明書を区別できません。すべての証明書をドロップダウンリストに入れたい場合は、読み込みに多くの時間がかかります。証明書のサブジェクト名を入力し、すべての証明書を正しい名前になるまでループする別の方法は、IT以外の人にとっては実際には実用的ではないため、通常のユーザーにとっては扱いにくいです...

ネットにはこのトピックに関する参照はほとんどありません。そのため、この投稿でのみgoogleandroidproに質問しています。

ありがとうございました

4

1 に答える 1

0

これはプライベート API であり、サードパーティのアプリケーションでは使用できません。ユーザー証明書を選択する理由を教えてください。通常、ユーザーの秘密鍵が必要であり、KeyChain API は、ユーザーがそれらのいずれかを選択できるようにすることをサポートしています。

于 2012-04-17T02:09:08.360 に答える