aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt13
1 files changed, 11 insertions, 2 deletions
diff --git a/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt b/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt
index 66b5cf1f..6f07a51a 100644
--- a/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt
+++ b/app/src/main/java/app/passwordstore/ui/main/LaunchActivity.kt
@@ -22,10 +22,21 @@ import java.io.File
@SuppressLint("CustomSplashScreen")
class LaunchActivity : AppCompatActivity() {
+ private var prompted = false
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ if (!sharedPrefs.getBoolean(PreferenceKeys.BIOMETRIC_AUTH_2, false)) startTargetActivity(true)
+ }
+
+ // The prompt waits for window focus: Android 14's SystemUI dismisses a prompt shown while its
+ // activity is not yet on top (shown from onCreate), with ERROR_CANCELED, closing the app at once.
+ override fun onWindowFocusChanged(hasFocus: Boolean) {
+ super.onWindowFocusChanged(hasFocus)
+ if (!hasFocus || prompted || isFinishing) return
val prefs = sharedPrefs
if (prefs.getBoolean(PreferenceKeys.BIOMETRIC_AUTH_2, false)) {
+ prompted = true
BiometricAuthenticator.authenticate(this) { result ->
when (result) {
is Result.Success -> {
@@ -43,8 +54,6 @@ class LaunchActivity : AppCompatActivity() {
is Result.Retry -> {}
}
}
- } else {
- startTargetActivity(true)
}
}