【问题标题】:Crash using biometric androidX library 1.1.0使用生物识别 androidX 库 1.1.0 崩溃
【发布时间】:2021-03-12 19:09:57
【问题描述】:

在我的应用中,我使用的是 androidX 生物识别支持库 1.1.0。在所有 Android 版本上,我的应用程序都崩溃了。这是我用过的代码sn-p

例外:

java.lang.IllegalStateException: 必须从片段宿主的主线程调用

在:

public boolean isFingerprintAuthAvailable(Context mContext) {
        BiometricManager biometricManager = BiometricManager.from(mContext);
        if (biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE) {
            return false;
        } else if (biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE) {
            return false;
        } else if (biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED) {
            return false;
        } else if (biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
            return true;
        }
        return false;
    }

BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
                    .setTitle("fingerPrintTitle")
                    .setDescription("Description")
                    .setNegativeButtonText(""negative text")
                    .build();

 if (isFingerprintAuthAvailable(mContext)) {
        mBiometricPrompt.authenticate(promptInfo, cryptoObject);
 }

【问题讨论】:

  • 你读过错误信息吗?
  • 是的,我做到了。崩溃是从 FragmentManager 类引发的。
  • 你发布的代码是无用的,因为它在哪里运行是未知的......正如错误消息提示的那样。
  • @MartinZeitler 感谢您的回复。我得到了答案。我在 Webview 上调用了 authenticate() 方法。并且 Webview 使用 JavascriptInterface 来发布消息。我移动了 mBiometricPrompt.authenticate(promptInfo, cryptoObject);使用 runOnUiThread stackoverflow.com/questions/4325639/… 到 UI 线程

标签: android android-fragments android-fingerprint-api android-biometric-prompt android-biometric


【解决方案1】:

我已将代码移至 UI 线程

runOnUiThread(new Runnable() {
            @Override
            public void run() {
                mBiometricPrompt.authenticate(promptInfo, cryptoObject);
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多