Как сгенерировать ключ с помощью KeyGenerator для API FingerPrint в Android

Я пытаюсь реализовать API FingerPrint для своего приложения. Для этой цели я использую образец диалогового окна Fingerprint от 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, кто-нибудь может подсказать, как сгенерировать ключ для поддержки более ранних версий, пожалуйста?


person Gulfam    schedule 11.02.2016    source источник
comment
Устройства ниже этих не имеют датчика отпечатков пальцев, поэтому я не думаю, что было бы необходимо обеспечить обратную поддержку.   -  person Ali Ansari    schedule 11.02.2016


Ответы (1)


Глядя на javadoc FingerprintManagerCompat:

Класс, который координирует доступ к аппаратному обеспечению отпечатков пальцев.

На платформах до 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.

person Sarbyn    schedule 15.02.2016