Отпечаток пальца BiometricPrompt на Android P из представления - PullRequest
2 голосов
/ 18 марта 2019

Я использую FingerprintManager для проверки подлинности моего приложения по отпечатку пальца. У меня есть android View с интерфейсом отпечатка пальца, и когда вызываются обратные вызовы FingerprintManager.authenticate, я обрабатываю обратные вызовы в представлении, например, изменяю значок отпечатка пальца, текст ошибки и т. Д.

Теперь в Android P я должен использовать BiometricPrompt, который достаточно прост в использовании, но заставляет меня иметь Activity для правильной работы

Есть ли способ заставить BiometricPrompt работать в обычном представлении Android?

это мой рабочий код для запуска подсказки в действии

    Signature signature = createSignature();
    biometricPrompt = new BiometricPrompt.Builder(context)
            .setDescription("Description")
            .setTitle("Title")
            .setSubtitle("Subtitle")
            .setNegativeButton("Cancel", context.getMainExecutor(), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Log.i(TAG, "Cancel button clicked");
                }
            })
            .build();

        biometricPrompt.authenticate(new BiometricPrompt.CryptoObject(signature), cancellationSignal, context.getMainExecutor() , new BiometricPrompt.AuthenticationCallback() {...}

где контекст - это деятельность, без которой он не может работать

1 Ответ

0 голосов
/ 21 марта 2019

После просмотра комментариев, которые я получил в ветке вопросов, я увидел, что проблема была в CancellationSignal, FingerprintManager работает в Android P, а также BiometricPrompt в представлениях,

Фактическаяпроблема была на устройствах Samsung (Note9, S10) под управлением Android P, при использовании FingerprintManager появится прозрачный экран и закроет изображение, которое у меня было cancelationSignal.cancel в onDetach, что нарушило бы весь поток аутентификации.На других устройствах это имеет смысл, поскольку пользователь может закрыть экран отпечатков пальцев по требованию

...