[Android Studio] Wie kann ich abfragen, ob bei dem Fingerprint Screen auf "Abbrechen" gedrückt/die App verlassen wurde?


26.06.2021, 09:00

In FingerprintHandler.java in den Zeilen 20+21 hab ich folgendes ergänzt:

Statt:

CancellationSignal cancellationSignal = new CancellationSignal();
fingerprintManager.authenticate(cryptoObject, null, 0, this, null);

Jetzt:

CancellationSignal cancellationSignal = new CancellationSignal();
fingerprintManager.authenticate(cryptoObject, cancellationSignal, 0, this, null);

Nun ist die Frage, wie ich die Abfrage dennoch richtig hinbekomme.

1 Antwort

Dein verwendeter FingerprintManager ist ab API Level 28 deprecated und sollte auch nicht mehr verwendet weden.

Siehe: https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager

Du solltest zum BiometricPrompt wechseln, welches auch empfohlen wird.

Hier habe ich ein Beispiel dazu gefunden.

Ein onCanceled scheint es nicht zu geben. Es gibt nur andere Events, die beim Error, Failed oder Success getriggert werden. Siehe Doku oder Beispiel.

Vielleicht solltest du die App darum designen. Beim Erfolg könnte direkt eine neue Aktivität oder Fragment aufgerufen werden. Beim Nicht-Erfolg sollte OnResume deiner Aktivität, welche den BiometricPrompt aufgerufen hat, getriggert werden. Ein Error oder Failed muss du dann noch vom Canceled separieren.

Alternativ kann ein Canceled auch nichts machen. Du hast ein Button der den BiometricPrompt aufruft und wenn abgebrochen wird, landest du wieder dort. Der Nutzer kommt nicht weiter.

Das Sperren, wenn der Nutzer die App minimiert, kannst du über den Activity Lifecycle lösen. OnPause bzw. OnStop sollte für dich passend sein.

Zum Thema KeyguardManager: https://developer.android.com/reference/android/app/KeyguardManager

Ich wüsste nicht, wozu du den Manager brauchst.


verreisterNutzer  28.06.2021, 14:21

Aber wie kann ich das denn verwenden? Bei zum Beispiel WhatsApp musste auch kein eigenes Popup programmiert werden...

https://pastebin.com/ri50k0Au

0
tide1109  28.06.2021, 16:55
@verreisterNutzer

Es ist gerade der Vorteil vom BiometricPrompt, dass man kein eigenes Design angeben muss. Der Dialog für die Biometrie wird vom System gestellt. Da auch z.B. Gesichtserkennung möglich ist, passt ein generischer Dialog zum Fingerabdruck auch nicht so gut. Der Hersteller hat den Dialog für die verbaute Biometrie angepasst.

Ich hatte bereits in der Antwort ein Beispiel verlinkt. Hier nochmal das Repo zum Beispiel: https://github.com/Kieun/android-biometricprompt/

Was soll das Pastebin Dokument?

0
verreisterNutzer  28.06.2021, 19:00
@tide1109

Es kann doch nicht sein, dass das Scannen (richtiger Finger/falscher Finger) so einfach ist und dann kommt der "Abbrechen" Button und das - ich sag mal - Pausieren, das so wahnsinnig umständlich ist... Da muss es doch eine kürzere Variante geben, weil die anderen Funktionen sind pro Methode gerade mal 3-6 Zeilen lang und bei dem Dude auf GitHub sinds insgesamt fast 300 Zeilen...

So groß ist nicht mal meine ganze Main Methode.

Und das mit Pastebin.. keine Ahnung

0