setContent {
FingerPrintAppTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background
) {
Greeting("Android")
}
}
}
inline fun <reified Activity : FragmentActivity> Context.getActivity(): Activity? {
return when (this) {
is Activity -> this
else -> {
var context = this
while (context is ContextWrapper) {
context = context.baseContext
if (context is Activity) return context
}
null
}
}
}
然后:
val activity = LocalContext.current.getActivity<MainActivity>()
val biometricPrompt = BiometricPrompt(
activity,
authenticationCallback
)
5条答案
按热度按时间wbgh16ku1#
从
FragmentActivity
子类化MainActivity
,然后在可组合中获取上下文:看看github上的一些例子:https://github.com/search?l=kotlin&q=BiometricPrompt%20composable&type=Code
kq4fsx7k2#
好吧,最后这很简单,但是花了我几个小时,所以这里是任何在这方面挣扎的人的答案。
请确保您的MainActivity继承自FragmentActivity()。然后您将能够将LocalContext.current强制转换为FragmentActivity。
jogvjijk3#
将
ComponetActivity()
替换为FragmentActivity()
,然后使用FragmentActivity()中的正常合成视图那么一切都正常
bvhaajcl4#
对于那些无法更改其Activity基类的用户,可以通过issuetracker.google.com/issues/178855209请求
biometric-compose
工件。遗憾的是,截至1.2.0-alpha04
版本,尚未针对此工件进行任何工作。r1zk6ea15#
您可以从AppCompatActivity继承,AppCompatActivity从FragmentActivity继承,FragmentActivity从ComponentActivity继承。
然后您可以:
然后: