我正在尝试为我的应用程序实现指纹API。为此,我正在遵循Google的指纹对话框示例。
如果compileSdkVersion=23
和minSdkVersion=23
,它可以正常工作,但我的应用程序compileSdkVersion
是 21,minSdkVersion
是 14。为此,我使用 FingerprintManagerCompat
而不是 FingerprintManager
工作正常,但问题出在密钥生成上。
android.security.keystore.KeyGenParameterSpec;
android.security.keystore.KeyPermanentlyInvalidatedException;
android.security.keystore.KeyProperties;
密钥库包及其类不可用于生成密钥,所有支持的密钥生成算法在 18+ API 版本中可用,任何人都可以指导我如何生成密钥以支持较低版本,请问?
查看 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 版本 23,则使用 LegacyFingerprintManagerCompatImpl,这只是一个存根。例如:
@Override
public boolean hasEnrolledFingerprints(Context context) {
return false;
}
@Override
public boolean isHardwareDetected(Context context) {
return false;
}
您不能在旧设备中使用此功能。这些 API(一些来自 android.security.keystore)仅在 Android M 上可用