private void HandleFingerprintKeyInvalidated() { var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn); //key invalidated permanently btn.SetImageResource(Resource.Drawable.ic_fingerprint_error); btn.Tag = GetString(Resource.String.fingerprint_unlock_failed) + " " + GetString(Resource.String.fingerprint_reenable2); _fingerprintIdentifier = null; }
protected override void OnPause() { if (_fingerprintIdentifier != null) { Kp2aLog.Log("FP: Stop listening"); _fingerprintIdentifier.StopListening(); _fingerprintIdentifier = null; } base.OnPause(); }
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) { Kp2aLog.Log("OnRequestPermissionsResult " + (requestCode == FingerprintPermissionRequestCode) + ((grantResults.Length > 0) && (grantResults[0] == Permission.Granted))); if ((requestCode == FingerprintPermissionRequestCode) && (grantResults.Length > 0) && (grantResults[0] == Permission.Granted)) { var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn); btn.Click += (sender, args) => { AlertDialog.Builder b = new AlertDialog.Builder(this); b.SetTitle(Resource.String.fingerprint_prefs); b.SetMessage(btn.Tag.ToString()); b.SetPositiveButton(Android.Resource.String.Ok, (o, eventArgs) => ((Dialog)o).Dismiss()); if (_fingerprintIdentifier != null) { b.SetNegativeButton(Resource.String.disable_sensor, (senderAlert, alertArgs) => { btn.SetImageResource(Resource.Drawable.ic_fingerprint_error); _fingerprintIdentifier?.StopListening(); _fingerprintIdentifier = null; }); } else { b.SetNegativeButton(Resource.String.enable_sensor, (senderAlert, alertArgs) => { InitFingerprintUnlock(); }); } b.Show(); }; _fingerprintPermissionGranted = true; Kp2aLog.Log("_fingerprintPermissionGranted"); if (_onResumeDone) { //it seems the permission result is called after onResume sometimes. Repeat fingerprint unlock then. InitFingerprintUnlock(); } } }
private bool InitFingerprintUnlock() { Kp2aLog.Log("InitFingerprintUnlock"); if (_fingerprintIdentifier != null) { Kp2aLog.Log("Already listening for fingerprint!"); return(true); } var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn); try { FingerprintUnlockMode um; Enum.TryParse(PreferenceManager.GetDefaultSharedPreferences(this).GetString(App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintModePrefKey, ""), out um); btn.Visibility = (um != FingerprintUnlockMode.Disabled) ? ViewStates.Visible : ViewStates.Gone; if (um == FingerprintUnlockMode.Disabled) { _fingerprintIdentifier = null; return(false); } if (_fingerprintPermissionGranted) { FingerprintModule fpModule = new FingerprintModule(this); Kp2aLog.Log("fpModule.FingerprintManager.IsHardwareDetected=" + fpModule.FingerprintManager.IsHardwareDetected); if (fpModule.FingerprintManager.IsHardwareDetected) //see FingerprintSetupActivity { _fingerprintIdentifier = new FingerprintDecryption(fpModule, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey, this, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey); } } if ((_fingerprintIdentifier == null) && (!FingerprintDecryption.IsSetUp(this, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey))) { try { Kp2aLog.Log("trying Samsung Fingerprint API..."); _fingerprintIdentifier = new FingerprintSamsungIdentifier(this); btn.Click += (sender, args) => { if (_fingerprintIdentifier.Init()) { _fingerprintIdentifier.StartListening(this, this); } }; Kp2aLog.Log("trying Samsung Fingerprint API...Seems to work!"); } catch (Exception) { Kp2aLog.Log("trying Samsung Fingerprint API...failed."); _fingerprintIdentifier = null; } } if (_fingerprintIdentifier == null) { FindViewById <ImageButton>(Resource.Id.fingerprintbtn).Visibility = ViewStates.Gone; return(false); } btn.Tag = GetString(Resource.String.fingerprint_unlock_hint); if (_fingerprintIdentifier.Init()) { Kp2aLog.Log("successfully initialized fingerprint."); btn.SetImageResource(Resource.Drawable.ic_fp_40px); _fingerprintIdentifier.StartListening(this, this); return(true); } else { Kp2aLog.Log("failed to initialize fingerprint."); HandleFingerprintKeyInvalidated(); } } catch (Exception e) { Kp2aLog.Log("Error initializing Fingerprint Unlock: " + e); btn.SetImageResource(Resource.Drawable.ic_fingerprint_error); btn.Tag = "Error initializing Fingerprint Unlock: " + e; _fingerprintIdentifier = null; } return(false); }