首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setDeviceCredentialAllowed()出现java.lang.NoSuchMethodError错误

setDeviceCredentialAllowed()出现java.lang.NoSuchMethodError错误
EN

Stack Overflow用户
提问于 2019-10-03 20:47:11
回答 1查看 466关注 0票数 0

我正在尝试为我的应用程序创建一个身份验证系统。当我编译代码时,Android Studio抛出以下错误

代码语言:javascript
复制
java.lang.NoSuchMethodError: No virtual method setDeviceCredentialAllowed(Z)Landroid/hardware/biometrics/BiometricPrompt$Builder; in class Landroid/hardware/biometrics/BiometricPrompt$Builder; or its super classes (declaration of 'android.hardware.biometrics.BiometricPrompt$Builder' appears in /system/framework/framework.jar)

我遵循了一些其他可能的解决方案,例如Invalidating Caches and Restarting my Android Studio,但它没有解决问题

我正在使用androidx.biometric:biometric:1.0.0-alpha03

代码语言:javascript
复制
    KeyguardManager keyguardManager = (KeyguardManager) getApplication().getSystemService(KEYGUARD_SERVICE);
            if(keyguardManager.isKeyguardSecure()){
                Toast.makeText(this,"Using keyguard",Toast.LENGTH_SHORT).show();
                Builder biometricPromptBuilder = new Builder(this);

                biometricPromptBuilder.setTitle("Title");
                biometricPromptBuilder.setSubtitle("Subtitle");
                biometricPromptBuilder.setDescription("Discription");
                biometricPromptBuilder.setNegativeButton("Cancel", newExecutor, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });
                biometricPromptBuilder.setDeviceCredentialAllowed(true);
                android.hardware.biometrics.BiometricPrompt biometricPrompt = biometricPromptBuilder.build();
                CancellationSignal cancellationSignal = new CancellationSignal();
                biometricPrompt.authenticate(cancellationSignal, newExecutor, new android.hardware.biometrics.BiometricPrompt.AuthenticationCallback() {
                    @Override
                    public void onAuthenticationError(int errorCode, CharSequence errString) {
                        super.onAuthenticationError(errorCode, errString);
                    }

                    @Override
                    public void onAuthenticationHelp(int helpCode, CharSequence helpString) {
                        super.onAuthenticationHelp(helpCode, helpString);
                    }

                    @Override
                    public void onAuthenticationSucceeded(android.hardware.biometrics.BiometricPrompt.AuthenticationResult result) {
                        super.onAuthenticationSucceeded(result);
                    }

                    @Override
                    public void onAuthenticationFailed() {
                        super.onAuthenticationFailed();
                    }
                });
            }
        }

预期的输出应该是应用程序的成功编译

EN

回答 1

Stack Overflow用户

发布于 2019-10-07 23:31:36

androidx API在beta01中是released,而框架(android.hardware.biometrics) API是在29中发布的。

编辑:只需重新阅读您的帖子,您使用的是框架版本的API。您的目标API级别是多少?该框架的版本只有29+可用。您应该考虑使用androidx.biometric版本的API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58219449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档