Я использую новый BiometricPrompt в своем приложении для Android из приведенного ниже литературного
implementation 'androidx.biometric:biometric:1.0.0-rc01'
Я могу успешно показать BiometicPrompt, когда действие загружено.
Моя проблема заключается в том, что если я сохраняю идеальную подсказку в течение 30-60 секунд, или если я переключаю приложение на фон, или если я блокирую и разблокирую экран, когда подсказка отображается, когда приложение снова появляется, BiometricPrompt закрывается / не отображается. Я не могу определить, связана ли проблема с моим исполнителем, пожалуйста, помогите. Ниже мой код
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Executor executor = Executors.newFixedThreadPool(2);
final BiometricPrompt biometricPrompt = new BiometricPrompt(this,
executor, new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
}
@Override
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
navigateHome();
}
@Override
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
}
});
final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("Authenticate")
.setSubtitle("Unlock with your fingerprint")
.setNegativeButtonText("Cancel")
.build();
biometricPrompt.authenticate(promptInfo);
}
Обновления от 13.02.2019
Я обновился до
implementation 'androidx.biometric:biometric:1.0.1'
и изменил исполнителя, как показано ниже
Executor executor = ContextCompat.getMainExecutor(this);
Большинство проблем теперь решено, за исключением устройства Oneplus с не отображаемым сканером отпечатков пальцев (модели 6T и выше). При предоставлении неправильного сканирования пальца (при первом же сканировании) подсказка вызывает onAuthenticationFailed () вместо onAuthenticationError (..)