Ich habe schon eine ganze Weile daran gearbeitet und kann es nicht herausfinden, obwohl ich dachte, es wäre relativ einfach. Ich benutze den Fingerabdruckmanager von Android, um Benutzer über ihren Fingerabdruck zu authentifizieren, und es hat sehr gut funktioniert. Das Problem ist, dass ich die Authentifizierungsergebnisse nicht von meiner Hilfsklasse zurückbekomme und es ist sehr frustrierend. Ich bin ziemlich neu in der Verwendung von Hilfsklassen und nachdem ich es ausführlich gegooglet habe, kann ich die Authentifizierungsergebnisse immer noch nicht in meine Aktivität zurückbringen. Meine beste Hoffnung war es, Absichten mit onActivityResult zu verwenden, aber die Helferklasse sendet nie die Absicht aus (oder zumindest meine Hauptaktivität erhält sie nicht).Wie erhalten Sie Ergebnisse für die Authentifizierung per Fingerabdruck in früheren Aktivitäten?
Als Referenz ist meine Hauptklasse eine Aktivität, die eine Hilfsklasse verwendet (die .AuthenticationCallback erweitert), um ihre Fingerabdrücke zu überprüfen. Die Helfer-Klasse enthält die folgenden Methoden:
public void startAuth(FingerprintManager manager, FingerprintManager.CryptoObject cryptoObject) {
cancellationSignal = new CancellationSignal();
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
return;
}
manager.authenticate(cryptoObject, cancellationSignal, 0, this, null);
}
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
}
@Override
public void onAuthenticationFailed() {
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
Toast.makeText(context, "You have Been Successfully authenticated!", Toast.LENGTH_SHORT).show();
}
Der Code aus der Tätigkeit einfach die Absicht aussendet und hat eine onActivityResult Methode:
Intent btauthenticate = new Intent(getApplicationContext(), FingerPrintMainActivity.class);
startActivityForResult(authenticate, 1);
Die Fingerabdrücke erfolgreich authentifiziert werden, und ich meinen Toast Nachricht erhalten, aber ich weiß einfach nicht, wie ich die Ergebnisse zurückbekomme. Ich denke, dass es einen einfachen Weg geben muss, um die Ergebnisse zurück zu bekommen, aber ich kann es einfach nicht herausfinden und es ist sehr frustrierend. Jede Hilfe wird sehr geschätzt.
Verwenden Sie den Callback-Parameter. 'result.getAnyUsefulInfo()' –
@MartinPfeffer Danke für die Antwort. Ich bin mir jedoch nicht sicher, wie ich es benutzen soll. Says getAnyUsefulInfo() ist nicht definiert. Ich habe versucht, nach diesem Callback-Parameter zu suchen, habe aber keine Dokumentation dazu gefunden. Hätten Sie zufällig einen Link, eine Referenz oder einen Beispielcode? – steven
https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager.html#authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, int, android.hardware.fingerprint.FingerprintManager .AuthenticationCallback, android.os.Handler) –