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

Commit ff780b0

Browse files
authored
Use same checks as BiometricAuthenticator in UserPreference (#1088)
1 parent c65f3c7 commit ff780b0

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ insert_final_newline = true
1212

1313
[*.{java,kt,kts,xml}]
1414
indent_size = 4
15-
ij_continuation_indent_size = 2
15+
ij_continuation_indent_size = 4
1616

1717
[*.{kt,kts}]
1818
kotlin_imports_layout=ascii

app/src/main/java/com/zeapo/pwdstore/UserPreference.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import androidx.activity.result.contract.ActivityResultContracts.OpenDocument
2424
import androidx.activity.result.contract.ActivityResultContracts.OpenDocumentTree
2525
import androidx.appcompat.app.AppCompatActivity
2626
import androidx.appcompat.widget.AppCompatTextView
27-
import androidx.biometric.BiometricManager
2827
import androidx.core.content.edit
2928
import androidx.core.content.getSystemService
3029
import androidx.documentfile.provider.DocumentFile
@@ -281,9 +280,9 @@ class UserPreference : AppCompatActivity() {
281280
findPreference<CheckBoxPreference>(PreferenceKeys.ENABLE_DEBUG_LOGGING)?.isVisible = !BuildConfig.ENABLE_DEBUG_FEATURES
282281

283282
findPreference<CheckBoxPreference>(PreferenceKeys.BIOMETRIC_AUTH)?.apply {
284-
val isFingerprintSupported = BiometricManager.from(requireContext())
285-
.canAuthenticate(BiometricManager.Authenticators.DEVICE_CREDENTIAL) == BiometricManager.BIOMETRIC_SUCCESS
286-
if (!isFingerprintSupported) {
283+
val canAuthenticate = BiometricAuthenticator.canAuthenticate(prefsActivity)
284+
285+
if (!canAuthenticate) {
287286
isEnabled = false
288287
isChecked = false
289288
summary = getString(R.string.biometric_auth_summary_error)

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.zeapo.pwdstore.R
2020
object BiometricAuthenticator {
2121

2222
private const val TAG = "BiometricAuthenticator"
23+
private const val validAuthenticators = Authenticators.DEVICE_CREDENTIAL or Authenticators.BIOMETRIC_WEAK
2324

2425
sealed class Result {
2526
data class Success(val cryptoObject: BiometricPrompt.CryptoObject?) : Result()
@@ -28,6 +29,10 @@ object BiometricAuthenticator {
2829
object Cancelled : Result()
2930
}
3031

32+
fun canAuthenticate(activity: FragmentActivity): Boolean {
33+
return BiometricManager.from(activity).canAuthenticate(validAuthenticators) == BiometricManager.BIOMETRIC_SUCCESS
34+
}
35+
3136
fun authenticate(
3237
activity: FragmentActivity,
3338
@StringRes dialogTitleRes: Int = R.string.biometric_prompt_title,
@@ -60,10 +65,8 @@ object BiometricAuthenticator {
6065
callback(Result.Success(result.cryptoObject))
6166
}
6267
}
63-
val validAuthenticators = Authenticators.DEVICE_CREDENTIAL or Authenticators.BIOMETRIC_WEAK
64-
val canAuth = BiometricManager.from(activity).canAuthenticate(validAuthenticators) == BiometricManager.BIOMETRIC_SUCCESS
6568
val deviceHasKeyguard = activity.getSystemService<KeyguardManager>()?.isDeviceSecure == true
66-
if (canAuth || deviceHasKeyguard) {
69+
if (canAuthenticate(activity) || deviceHasKeyguard) {
6770
val promptInfo = BiometricPrompt.PromptInfo.Builder()
6871
.setTitle(activity.getString(dialogTitleRes))
6972
.setAllowedAuthenticators(validAuthenticators)

0 commit comments

Comments
 (0)