7

我正在尝试为我的应用程序实现指纹 API。为此,我正在关注 Google 的指纹对话框示例。

如果我的应用程序是 21 并且是 14,它工作正常。为此,我使用compileSdkVersion=23不是工作正常,但问题在于密钥生成。minSdkVersion=23 compileSdkVersionminSdkVersionFingerprintManagerCompatFingerprintManager

android.security.keystore.KeyGenParameterSpec;
android.security.keystore.KeyPermanentlyInvalidatedException;
android.security.keystore.KeyProperties;

Keystore 包及其类无法生成密钥,所有支持的密钥生成算法都在 18+ API 版本中可用,任何人都可以指导我如何生成密钥以支持较低版本,好吗?

4

1 回答 1

2

查看 FingerprintManagerCompat javadoc:

协调对指纹硬件的访问的类。

在 M 之前的平台上,此类的行为就像没有可用的指纹硬件一样。

查看源代码:

final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
   // a working implementation
   IMPL = new Api23FingerprintManagerCompatImpl();
} else {
   // an empty stub
   IMPL = new LegacyFingerprintManagerCompatImpl();
}

如果您的设备低于 API VERSION 23,则使用 LegacyFingerprintManagerCompatImpl,这只是一个存根。例如:

@Override
public boolean hasEnrolledFingerprints(Context context) {
   return false;
}
@Override
public boolean isHardwareDetected(Context context) {
   return false;
}

您不能在旧设备中使用此类功能。这些 API(一些来自 android.security.keystore)仅在 Android M 上可用

于 2016-02-15T10:57:43.987 回答