File tree Expand file tree Collapse file tree
libs/biometrics/src/main/kotlin/com/getcode/libs/biometrics Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11package com.getcode.libs.biometrics
22
33import android.content.Context
4+ import android.content.ContextWrapper
45import androidx.biometric.BiometricManager
56import androidx.biometric.BiometricPrompt
67import androidx.compose.runtime.getValue
@@ -79,7 +80,7 @@ object Biometrics {
7980 promptActive = true
8081 delay(delay)
8182 return suspendCancellableCoroutine { cont ->
82- val activity = context as FragmentActivity
83+ val activity = context.findFragmentActivity()
8384 val executor = Executors .newSingleThreadExecutor()
8485 val biometricPrompt = BiometricPrompt (
8586 activity,
@@ -112,4 +113,13 @@ object Biometrics {
112113 biometricPrompt.authenticate(promptInfo)
113114 }
114115 }
116+ }
117+
118+ private fun Context.findFragmentActivity (): FragmentActivity {
119+ var ctx = this
120+ while (ctx is ContextWrapper ) {
121+ if (ctx is FragmentActivity ) return ctx
122+ ctx = ctx.baseContext
123+ }
124+ throw IllegalStateException (" Biometric prompt requires a FragmentActivity context" )
115125}
You can’t perform that action at this time.
0 commit comments