diff --git a/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt b/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt index 8fe5eb5394..25250791ef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt @@ -35,8 +35,9 @@ class BiometricDeviceAuthentication( private val DISALLOWED_BIOMETRIC_VERSIONS = setOf(28, 29) } - fun canAuthenticate(): Boolean { - return biometricManager.canAuthenticate(ALLOWED_AUTHENTICATORS) == BiometricManager.BIOMETRIC_SUCCESS + fun canAuthenticate(context: Context): Boolean { + val isKeyGuardSecure = ServiceUtil.getKeyguardManager(context).isKeyguardSecure + return isKeyGuardSecure && biometricManager.canAuthenticate(ALLOWED_AUTHENTICATORS) == BiometricManager.BIOMETRIC_SUCCESS } fun authenticate(context: Context, force: Boolean, showConfirmDeviceCredentialIntent: () -> Unit): Boolean { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/screenlock/ScreenLockSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/screenlock/ScreenLockSettingsFragment.kt index ff7f8fe60c..056b888297 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/screenlock/ScreenLockSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/screenlock/ScreenLockSettingsFragment.kt @@ -118,12 +118,12 @@ class ScreenLockSettingsFragment : ComposeFragment() { ScreenLockScreen( state = state, onChecked = { checked -> - if (biometricAuth.canAuthenticate() && !checked) { + if (biometricAuth.canAuthenticate(requireContext()) && !checked) { biometricAuth.updatePromptInfo(disableLockPromptInfo) biometricAuth.authenticate(requireContext(), true) { biometricDeviceLockLauncher.launch(getString(R.string.ScreenLockSettingsFragment__turn_off_signal_lock)) } - } else if (biometricAuth.canAuthenticate() && checked) { + } else if (biometricAuth.canAuthenticate(requireContext()) && checked) { biometricAuth.updatePromptInfo(enableLockPromptInfo) biometricAuth.authenticate(requireContext(), true) { biometricDeviceLockLauncher.launch(getString(R.string.ScreenLockSettingsFragment__use_screen_lock)) 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 cd2fd0fbb2..8e7a996708 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/LinkDeviceFragment.kt @@ -152,7 +152,7 @@ class LinkDeviceFragment : ComposeFragment() { modifier = Modifier.padding(contentPadding), onLearnMore = { navController.safeNavigate(R.id.action_linkDeviceFragment_to_linkDeviceLearnMoreBottomSheet) }, onLinkDevice = { - if (biometricAuth.canAuthenticate()) { + if (biometricAuth.canAuthenticate(requireContext())) { navController.safeNavigate(R.id.action_linkDeviceFragment_to_linkDeviceEducationSheet) } else { navController.safeNavigate(R.id.action_linkDeviceFragment_to_addLinkDeviceFragment)