0

在为 Android 使用三星Fingerprint Spass Apis时,如果指纹认证失败,我可以选择(老实说我被迫)询问用户密码。现在,当 Android M 为我们提供原生FingerPrintAPI 时,我无法找到实现相同功能的方法。问题是:如果用户未能提供正确的指纹 5 次,我FINGERPRINT_ERROR_LOCKOUT从 得到错误代码FingerprintManager,但我不知道如何使用备份密码引发对话框以及负责此操作的 Android 组件。请问'任何android专家?谢谢。这是我的回调函数片段:

@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
    logger.info("Authentication error " + errorCode + " " + errString);
    super.onAuthenticationError(errorCode, errString);
    //5 failed attempts
    if (errorCode == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT) {
       //HERE SAMSUNG WAS RAISING PASSWORD DIALOG WITHOUT MY INTERVENTION 
       fingerprintCallback.onFinished(FingerprintCallback.STATUS_AUTHENTIFICATION_FAILED);
    //30 seconds no one touched the sensor
    } else if (errorCode == FingerprintManager.FINGERPRINT_ERROR_TIMEOUT) {
        fingeprintCallback.onFinished(FingerprintCallback.STATUS_TIMEOUT_FAILED);
    //cancellation signal cancel() was called
    } else if (errorCode == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
        if (!isTimeout) {
            fingerprintCallback.onFinished(FingerprintCallback.STATUS_USER_CANCELLED);
            }
    } else {
         fingerprintCallback.onFinished(FingerprintCallback.STATUS_FAILED);
    }

    if (fingerprintDialog != null) {
        fingerprintDialog.dismiss();
    }
}

需要明确的是 - 我需要手机的 PIN 密码,即用户在进入设备安全设置中的指纹部分时需要输入的确切密码。

4

1 回答 1

3

你必须自己做。请参阅此处的示例:

https://github.com/googlesamples/android-FingerprintDialog/blob/master/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java

在 onError() 方法中,它将调用 goToBackup 方法,该方法会将对话框更改为密码对话框。

我不确定三星是如何做到的以及您的意图是什么,但当前的 Android 指纹 API 无法回退到任何其他设备身份验证,因此您必须使用自己的回退(参见第二个项目符号):

https://developer.android.com/training/articles/keystore.html#UserAuthentication

于 2016-09-01T17:05:57.853 回答