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