java - 关于 BiometricPrompt.authenticate()

标签 java android android-biometric-prompt

在 Android 开发者引用中,我发现了这样的引用:

This call warms up the biometric hardware, displays a system-provided dialog, and starts scanning for a biometric.

此调用验证用户是否在智能手机上有指纹?如果不是,我如何验证?

 private void setLoginFingerprint() {
        final Executor executor = Executors.newSingleThreadExecutor();
        final BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(this)
                .setTitle("")
                .setSubtitle("")
                .setDescription("")
                .setNegativeButton("Cancel", executor, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }
                }).build();


        loginFingerprint = findViewById(R.id.ll_leitor_digital);
        loginFingerprint.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                biometricPrompt.authenticate(new CancellationSignal(), executor, new BiometricPrompt.AuthenticationCallback() {
                    @Override
                    public void onAuthenticationError(int errorCode, CharSequence errString) {
                        super.onAuthenticationError(errorCode, errString);
                        LoginActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(LoginActivity.this, "Error!", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }

                    @Override
                    public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
                        super.onAuthenticationSucceeded(result);
                        LoginActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(LoginActivity.this, "Auth!", Toast.LENGTH_SHORT).show();

                            }
                        });
                    }

                    @Override
                    public void onAuthenticationFailed() {
                        super.onAuthenticationFailed();
                        LoginActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(LoginActivity.this, "Error", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                });
            }
        });
    }

最佳答案

在这种情况下,会给出 BIOMETRIC_ERROR_HW_NOT_PRESENT 错误。如果发生这种情况,请使用 a KeyguardManager 。然后他们可以使用 PIN 或他们设置的任何身份验证方法进行身份验证。要处理此问题,请在 onAuthenticationError 中检查错误代码是否为 BIOMETRIC_ERROR_HW_NOT_PRESENT。如果是,请使用 KeyguardManager

关于java - 关于 BiometricPrompt.authenticate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61329603/

相关文章:

用于高级用户帐户保护的 Java 库

java - 通过编辑文本过滤结果

android - Dagger 2.11 - 组件中存在具有匹配键的绑定(bind)

android - 将自定义布局添加到生物识别提示

android-biometric-prompt - 使用生物识别时如何打开/关闭身份验证指纹或面部识别

java - 如何从 CSV 数据的第二行开始扫描到链接列表?

Java时间不同步

java - PyLucene 尝试创建 FSDirectory 时出现 InvalidArgsError

android - HTML 5 视频标签,使用 Ionic 3 在 Android 上 2-4 秒后开始播放视频

android - 在 Android 10 设备中,生物识别提示失败,并且锁屏顶部始终显示“错误已取消”