6
generiert werden

Ich versuche, die FingerPrint API für meine Anwendung zu implementieren. Ich folge dem Google Fingerprint Dialog sample für diesen Zweck.Wie Schlüssel mit KeyGenerator für Fingerprint API in Android

Es funktioniert gut, wenn compileSdkVersion=23 und minSdkVersion=23aber compileSdkVersion meine Anwendung ist 21 und minSdkVersion 14. Zu diesem Zweck ist, ich bin mit FingerprintManagerCompat statt FingerprintManager die gut arbeitet, aber das Problem ist mit der Schlüsselerzeugung.

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

Schlüsselspeicher-Paket und seine Klassen nicht verfügbar sind die Schlüssel, alle unterstützten Algorithmen für die Schlüsselgenerierung in 18+ API-Versionen zu erzeugen, jeder kann mich leiten, wie Sie die Schlüssel erzeugen niedrigere Versionen zu unterstützen, Bitte?

+0

Die Geräte niedriger als diese haben keinen Fingerabdrucksensor, so denke ich, dass es wäre notwendig, rückwärts Unterstützung geben. –

Antwort

2

bei FingerprintManagerCompat javadoc Suche:

Eine Klasse, die Zugriff auf die Fingerabdruck Hardware-Koordinaten.

Auf Plattformen vor M verhält sich diese Klasse so, als gäbe es keine Fingerprint-Hardware.

Mit Blick auf den Quellcode:

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

Wenn Ihr Gerät unter API-Version 23 ist die LegacyFingerprintManagerCompatImpl verwendet wird, und dies ist nur ein Stummel. Zum Beispiel:

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

Sie können diese Funktion nicht in älteren Geräten verwenden. Diese API (einige von android.security.keystore) sind nur auf Android M verfügbar