1

我有一个代码,我调用生物识别来验证密码,它最终正常工作,当我请求时我总是有预期的结果,但它最终在我的控制台上生成了一个我希望你解决的错误,但我不'找不到它的地方一些。

按照代码:

错误:

java.lang.IllegalStateException: Must be called from main thread of fragment host
    at androidx.fragment.app.FragmentManagerImpl.ensureExecReady(FragmentManagerImpl.java:1668)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1721)
    at androidx.fragment.app.FragmentManagerImpl.executePendingTransactions(FragmentManagerImpl.java:183)
    at androidx.biometric.BiometricPrompt.authenticateInternal(BiometricPrompt.java:749)
    at androidx.biometric.BiometricPrompt.authenticate(BiometricPrompt.java:658)
    at com.app.EntryPoint.showBiometricPrompt(EntryPoint.java:832)
    at ifractal.ManagingRequests$1.callback(ManagingRequests.java:156)
    at ifractal.ManagingRequests.itAllStartsHere(ManagingRequests.java:1598)
    at ifractal.JSBridge.query(JSBridge.java:35)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:326)
    at android.os.Looper.loop(Looper.java:165)
    at android.os.HandlerThread.run(HandlerThread.java:65)

public boolean showBiometricPrompt(String callback, String primeiro_acesso) {
    BiometricPrompt.PromptInfo promptInfo =
            new BiometricPrompt.PromptInfo.Builder()
                    .setTitle("Autenticação")
                    .setSubtitle("Realize o login usando sua biometria")
                    .setNegativeButtonText("Cancelar")
                    .build();

    BiometricPrompt biometricPrompt = new BiometricPrompt(EntryPoint.this,
            executor, new BiometricPrompt.AuthenticationCallback() {

        @Override
        public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
            super.onAuthenticationError(errorCode, errString);
            asset.log("onAuthenticationError", "Error: " +errString);
            }
        }

        @Override
        public void onAuthenticationSucceeded(
                @NonNull BiometricPrompt.AuthenticationResult result) {
            super.onAuthenticationSucceeded(result);
            BiometricPrompt.CryptoObject authenticatedCryptoObject =
                    result.getCryptoObject();
        }

        @SuppressLint("WrongConstant")
        @Override
        public void onAuthenticationFailed() {
            super.onAuthenticationFailed();
            asset.log("onAuthenticationError", "Failed");
        }
    });
    biometricPrompt.authenticate(promptInfo);
    return true;
}
4

0 回答 0