Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

Commit 2414c48

Browse files
authored
BiometricAuthenticator: fix multiple regressions from AndroidX update (#1045)
Fixes: 80e43e5 ("Update dependencies (#1039)") Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
1 parent 70aa41a commit 2414c48

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

app/src/main/java/com/zeapo/pwdstore/utils/BiometricAuthenticator.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.os.Handler
99
import androidx.annotation.StringRes
1010
import androidx.biometric.BiometricConstants
1111
import androidx.biometric.BiometricManager
12+
import androidx.biometric.BiometricManager.Authenticators
1213
import androidx.biometric.BiometricPrompt
1314
import androidx.core.content.getSystemService
1415
import androidx.fragment.app.FragmentActivity
@@ -60,13 +61,15 @@ object BiometricAuthenticator {
6061
callback(Result.Success(result.cryptoObject))
6162
}
6263
}
63-
val biometricPrompt = BiometricPrompt(activity, { handler.post(it) }, authCallback)
64-
val promptInfo = BiometricPrompt.PromptInfo.Builder()
65-
.setTitle(activity.getString(dialogTitleRes))
66-
.build()
67-
if (BiometricManager.from(activity).canAuthenticate(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
68-
== BiometricManager.BIOMETRIC_SUCCESS || activity.getSystemService<KeyguardManager>()?.isDeviceSecure == true) {
69-
biometricPrompt.authenticate(promptInfo)
64+
val validAuthenticators = Authenticators.DEVICE_CREDENTIAL or Authenticators.BIOMETRIC_STRONG
65+
val canAuth = BiometricManager.from(activity).canAuthenticate(validAuthenticators) == BiometricManager.BIOMETRIC_SUCCESS
66+
val deviceHasKeyguard = activity.getSystemService<KeyguardManager>()?.isDeviceSecure == true
67+
if (canAuth || deviceHasKeyguard) {
68+
val promptInfo = BiometricPrompt.PromptInfo.Builder()
69+
.setTitle(activity.getString(dialogTitleRes))
70+
.setAllowedAuthenticators(validAuthenticators)
71+
.build()
72+
BiometricPrompt(activity, { handler.post(it) }, authCallback).authenticate(promptInfo)
7073
} else {
7174
callback(Result.HardwareUnavailableOrDisabled)
7275
}

0 commit comments

Comments
 (0)