From 67a6d1675f118f40395cbfce6576ce0528504342 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 16 Jan 2026 07:34:52 +0100 Subject: [PATCH] Handle biometric authentication with revoked permissions --- .../main/java/eu/faircode/email/Helper.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 914ffff982..36c88af223 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -3681,7 +3681,34 @@ public class Helper { }); } }); - prompt.authenticate(info.build()); + try { + prompt.authenticate(info.build()); + } catch (Throwable ex) { + Log.e(ex); + try { + prompt.cancelAuthentication(); + } catch (Throwable ignored) { + } + /* + java.lang.SecurityException: eu.faircode.email from uid 10353 not allowed to perform USE_BIOMETRIC + at android.os.Parcel.createExceptionOrNull(Parcel.java:3354) + at android.os.Parcel.createException(Parcel.java:3338) + at android.os.Parcel.readException(Parcel.java:3321) + at android.os.Parcel.readException(Parcel.java:3263) + at android.hardware.biometrics.IAuthService$Stub$Proxy.authenticate(IAuthService.java:597) + at android.hardware.biometrics.BiometricPrompt.authenticateInternal(BiometricPrompt.java:1773) + at android.hardware.biometrics.BiometricPrompt.authenticateInternal(BiometricPrompt.java:1720) + at android.hardware.biometrics.BiometricPrompt.authenticate(BiometricPrompt.java:1698) + at androidx.biometric.BiometricFragment$Api28Impl.authenticate(SourceFile:1) + at androidx.biometric.BiometricFragment.authenticateWithBiometricPrompt(SourceFile:38) + at androidx.biometric.BiometricFragment.showBiometricPromptForAuthentication(SourceFile:119) + at androidx.biometric.BiometricFragment.showPromptForAuthentication(SourceFile:54) + at androidx.biometric.BiometricFragment.authenticate(SourceFile:98) + at androidx.biometric.BiometricPrompt.authenticateInternal(SourceFile:29) + at androidx.biometric.BiometricPrompt.authenticate(SourceFile:4) + at eu.faircode.email.Helper$12.onClick(SourceFile:120) + */ + } } else if (secure) tilPassword.getEditText().setTransformationMethod(null); }