古いバージョンでは機能しますが、Android 4.1 では KeyChain.getPrivateKey(Context,String) メソッドに問題があることを読みました。JellyBean で秘密鍵を取得する方法はありますか?
このUsing Android 4.1 Keychainを見ましたが、どういうわけか私のケースではうまくいきませんでした。
4.1 では機能しないが、古いバージョンではうまく機能するコード。
PrivateKey pk;
try {
pk = KeyChain.getPrivateKey(context,string);
byte[] pkByte = pk.getEncoded();
pkBase64 = new String(Base64.encode(pkByte, Base64.NO_WRAP));
}
編集:追加時に証明書エイリアス(デフォルトのhex-hex-hex)を変更しないと、getPrivateKeyはnullを返しますが、エイリアスをたとえばに変更すると、aaaメソッドは何かを返しますが、まだ正しい秘密鍵ではありません. (たとえば、primeP =null primeQ =null で秘密鍵が返されます。Android 4.0.4 では、primeP と primeQ は null 値ではありません)