Как включить / выключить аутентификацию по отпечатку пальца или распознаванию лица при использовании биометрических данных

Я использовал биометрические данные для аутентификации отпечатков пальцев или распознавания лиц. Это работает! Но я хочу использовать только отпечаток пальца или распознавание лиц только в том случае, если на моем устройстве настроены оба варианта. Могу я это сделать или нет? и как я могу это сделать, если может? Вот мой код

@RequiresApi(api = Build.VERSION_CODES.P)
public void authenticateUser(@NonNull Activity activity) {
    BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(activity)
            .setTitle("Biometric Demo")
            .setSubtitle("Authentication is required to continue")
            .setDescription("This app uses biometric authentication to protect your data.")
            .setNegativeButton("Cancel", activity.getMainExecutor(),
                    (dialogInterface, i) -> {
                        mCallback.onCancel();
                    })
            .build();

    biometricPrompt.authenticate(mCancellationSignal, activity.getMainExecutor(),
            getAuthenticationCallback());
}

@RequiresApi(api = Build.VERSION_CODES.P)
private BiometricPrompt.AuthenticationCallback getAuthenticationCallback() {

    return new BiometricPrompt.AuthenticationCallback() {
        @Override
        public void onAuthenticationError(int errorCode,
                                          CharSequence errString) {
            super.onAuthenticationError(errorCode, errString);
            mCallback.onError();
        }

        @Override
        public void onAuthenticationHelp(int helpCode,
                                         CharSequence helpString) {
            super.onAuthenticationHelp(helpCode, helpString);
        }

        @Override
        public void onAuthenticationFailed() {
            super.onAuthenticationFailed();
        }

        @Override
        public void onAuthenticationSucceeded(
                BiometricPrompt.AuthenticationResult result) {
            super.onAuthenticationSucceeded(result);
            mCallback.onAuthenticated();
        }
    };
}

person Hoa.Tran    schedule 01.09.2020    source источник


Ответы (1)


Я хочу использовать только отпечаток пальца или распознавание лиц только в том случае, если на моем устройстве настроены оба варианта. Могу я это сделать или нет?

Ответ: Согласно последним API, вы не можете этого сделать.

Функция биометрии несовместима на разных устройствах. В моем репозитории устройств у меня есть устройство Samsung S10 и устройство MI, и оба они ведут себя по-разному. В устройстве Samsung S10 я могу установить только в настройках устройства либо FACE / FINGERPRINT. То, что установлено в настройках устройства, вступает в силу, когда я вызываю API аутентификации.

В устройстве MI, наряду с Only Face / Only Fingerprint, у меня есть возможность установить оба. Я думаю, это то же самое, что и ваш случай. Если я установлю оба параметра в настройках устройства, после аутентификации () я могу аутентифицироваться либо с помощью Face, либо с помощью отпечатка пальца.

person Shanker    schedule 02.09.2020