public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) { if (requestCode == FINGERPRINT_PERMISSION_REQUEST_CODE && grantResults[0] == Android.Content.PM.Permission.Granted) { Button encButton = FindViewById <Button>(Resource.Id.MyButton); Button decButton = FindViewById <Button>(Resource.Id.Decrypt); encButton.Visibility = ViewStates.Visible; encButton.Enabled = true; var fingerprint = new keepass2android.FingerprintModule(this); encButton.Click += (sender, args) => { var fingerprintEnc = new FingerprintEncryption(fingerprint, _keyId); if (fingerprintEnc.InitCipher()) { fingerprintEnc.StartListening(new EncryptionCallback(this, fingerprintEnc, prefKey)); } else { Toast.MakeText(this, "Error initiating cipher", ToastLength.Long).Show(); } }; decButton.Click += (sender, args) => { var fingerprintDec = new FingerprintDecryption(fingerprint, _keyId, this, prefKey); if (fingerprintDec.InitCipher()) { fingerprintDec.StartListening(new DecryptionCallback(this, fingerprintDec, prefKey)); } else { Toast.MakeText(this, "Error initiating cipher", ToastLength.Long).Show(); } }; if (!fingerprint.KeyguardManager.IsKeyguardSecure) { encButton.Enabled = false; // Show a message that the user hasn't set up a fingerprint or lock screen. Toast.MakeText(this, "Secure lock screen hasn't set up.\n" + "Go to 'Settings -> Security -> Fingerprint' to set up a fingerprint", ToastLength.Long).Show(); return; } if (!fingerprint.FingerprintManager.HasEnrolledFingerprints) { encButton.Enabled = false; // This happens when no fingerprints are registered. Toast.MakeText(this, "Go to 'Settings -> Security -> Fingerprint' " + "and register at least one fingerprint", ToastLength.Long).Show(); return; } } }
public DecryptionCallback(Context context, FingerprintDecryption fingerprintDec, string prefKey) { _context = context; _fingerprintDec = fingerprintDec; _prefKey = prefKey; }