我正在尝试使用local_auth插件在我的flutter应用程序中实现fingerpritn身份验证。但它向我抛出平台异常错误:
PlatformException(auth_in_progress,正在进行身份验证,null)
final LocalAuthentication _localAuth = LocalAuthentication();
bool authenticated = false;
try {
authenticated = await _localAuth.authenticateWithBiometrics(
localizedReason: 'Scan your fingerprint to authenticate',
useErrorDialogs: true,
stickyAuth: false
);
} on PlatformException
catch(e) {
print(e);
}
return authenticated; }
7条答案
按热度按时间ctrmrzij1#
这发生在Android上。你必须修改你的MainActivity来实现FlutterFragmentActivity以使用local_auth插件。从这里更改您的代码(在我的示例中是Kotlin):
对此:
另外,您需要将这两行添加到您的gradle.properties文件中。
这个错误从0.5.1版本开始就很难找到了,因为插件没有抛出正确的异常,文档也没有告诉你实现这个基类。
jdgnovmf2#
我解决了这个问题:
android/app/src/main/kotlin/MainActivity.kt
android/app/src/main/AndroidManifest.xml
中禁用,启用SplashScreenDrawable或Java版本
kqlmhetl3#
我只是通过从
gradle.properties
文件中删除android.useAndroidX=true
和android.enableJetifier=true
属性来解决这个问题。这是我的
gradle.properties
文件中的所有内容:qnzebej04#
通过在
authenticate
方法中将stickyAuth
选项设置为true
解决。请参阅doc了解更多信息。
4uqofj5v5#
我认为现在回复已经太晚了,但正如local_auth文档中所说:
您应该使用
Sticky Auth
并将其设置为true顺便说一句,这对我很有效
gcuhipw96#
我也有同样的问题。但上述答案都没有用。棘手的解决方案是将“sensitiveTransaction”值设置为false。默认情况下,此值为true。
当用户点击生物识别按钮时,默认情况下会出现两个对话框。一个是面部识别或指纹识别,第二个是确认对话框。在这种情况下,如果用户点击取消,权限被拒绝,它将永远不会再问。如果“sensitiveTransaction”设置为false,则在使用faceid或指纹验证后不会要求确认。
wlwcrazw7#
我找到了一个简单的解决办法。在调用LocalAuthentication()之前.authenticate()
我们可以调用await LocalAuthentication().stopAuthentication();
帮助我修复了代码