[Android Studio] Wie kann ich abfragen, ob bei dem Fingerprint Screen auf "Abbrechen" gedrückt/die App verlassen wurde?
Das Problem ist nämlich dabei, dass dadurch einfach die Fingerprintfunktion umgangen werden kann. Bzw. wie kann ich es auch machen, dass wenn die App verlassen wird (nicht geschlossen), vorher der Scan abgeschlossen war, dann wieder angezeigt wird? (Sowie bei Samsung Pass)
FingerprintHandler.java: https://pastebin.com/mCwHzJ3Q
MainActivity.java: https://pastebin.com/jBhFfKcX
Dann hab ich noch folgende Frage: Wofür benutzt man dieses KeyguardManager?
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.
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?
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
Aber wie kann ich das denn verwenden? Bei zum Beispiel WhatsApp musste auch kein eigenes Popup programmiert werden...
https://pastebin.com/ri50k0Au