diff --git a/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt b/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt index 25250791ef..676bcd024f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms import android.app.Activity +import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.os.Build @@ -51,7 +52,12 @@ class BiometricDeviceAuthentication( return if (!DISALLOWED_BIOMETRIC_VERSIONS.contains(Build.VERSION.SDK_INT) && biometricManager.canAuthenticate(ALLOWED_AUTHENTICATORS) == BiometricManager.BIOMETRIC_SUCCESS) { if (force) { Log.i(TAG, "Listening for biometric authentication...") - biometricPrompt.authenticate(biometricPromptInfo) + try { + biometricPrompt.authenticate(biometricPromptInfo) + } catch (e: ActivityNotFoundException) { + Log.w(TAG, "Failed to launch confirm device credential settings", e) + return false + } } else { Log.i(TAG, "Skipping show system biometric or device lock dialog unless forced") } diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceFragment.kt index 8e7a996708..0013c2fc74 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceFragment.kt @@ -135,7 +135,9 @@ class LinkDeviceFragment : ComposeFragment() { LaunchedEffect(state.seenEducationSheet) { if (state.seenEducationSheet) { - biometricAuth.authenticate(requireContext(), true) { biometricDeviceLockLauncher.launch(getString(R.string.LinkDeviceFragment__unlock_to_link)) } + if (!biometricAuth.authenticate(requireContext(), true) { biometricDeviceLockLauncher.launch(getString(R.string.LinkDeviceFragment__unlock_to_link)) }) { + navController.safeNavigate(R.id.action_linkDeviceFragment_to_addLinkDeviceFragment) + } viewModel.markEducationSheetSeen(false) } }