internal void StartAuthentication(FingerprintManagerCompat fingerprintManager, FingerprintManagerCompat.CryptoObject cryptoObject) { CancellationSignal cancellationSignal = new CancellationSignal(); fingerprintManager.Authenticate(cryptoObject, 0, cancellationSignal, this, null); }
public Task <bool> AuthenticateUserIDWithTouchID() { var tcs = new TaskCompletionSource <bool>();//used to wait the mainUI to get the response of the touchId KeyguardManager keyguardManager = (KeyguardManager)context.GetSystemService(Context.KeyguardService); FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context); if (Build.VERSION.SdkInt >= BuildVersionCodes.P) { if (ActivityCompat.CheckSelfPermission(context, Manifest.Permission.UseBiometric) != (int)Android.Content.PM.Permission.Granted) { return(tcs.Task); } if (!fingerprintManager.IsHardwareDetected) { Toast.MakeText(context, "FingerPrint authentication permission not enable", ToastLength.Short).Show(); } else { if (!fingerprintManager.HasEnrolledFingerprints) { Toast.MakeText(context, "Register at least one fingerprint in Settings", ToastLength.Short).Show(); } else { if (!keyguardManager.IsKeyguardSecure) { Toast.MakeText(context, "Lock screen security not enable in Settings", ToastLength.Short).Show(); } else { GenKey(); } if (CipherInit()) { FingerprintManagerCompat.CryptoObject cryptoObject = new FingerprintManagerCompat.CryptoObject(cipher); BiometricHandler handler = new BiometricHandler(context); handler.StartAuthentication(fingerprintManager, cryptoObject); } } } } else if (Build.VERSION.SdkInt >= BuildVersionCodes.M) { if (ActivityCompat.CheckSelfPermission(context, Manifest.Permission.UseFingerprint) != (int)Android.Content.PM.Permission.Granted) { return(tcs.Task); } if (!fingerprintManager.IsHardwareDetected) { Toast.MakeText(context, "FingerPrint authentication permission not enable", ToastLength.Short).Show(); } else { if (!fingerprintManager.HasEnrolledFingerprints) { Toast.MakeText(context, "Register at least one fingerprint in Settings", ToastLength.Short).Show(); } else { if (!keyguardManager.IsKeyguardSecure) { Toast.MakeText(context, "Lock screen security not enable in Settings", ToastLength.Short).Show(); } else { GenKey(); } if (CipherInit()) { FingerprintManagerCompat.CryptoObject cryptoObject = new FingerprintManagerCompat.CryptoObject(cipher); BiometricHandler handler = new BiometricHandler(context); handler.StartAuthentication(fingerprintManager, cryptoObject); } } } } else { return(tcs.Task); } tcs.SetResult(IsAutSucess); return(tcs.Task); }