java.lang.NoSuchMethodError ошибка для setDeviceCredentialAllowed () - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь создать систему аутентификации для моего приложения. Когда я компилирую код, Android Studio выдает следующую ошибку

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

    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();
                    }
                });
            }
        }

Ожидаемый результат должен быть успешной компиляции приложения

1 Ответ

0 голосов
/ 07 октября 2019

API androidx был выпущен в beta01, в то время как фреймворк (android.hardware.biometrics) API был выпущен в 29.

Редактировать: просто перечитайте ваш пост,вы используете версию API фреймворка. Каков ваш целевой уровень API? Версия фреймворка доступна только 29+. Вам следует рассмотреть возможность использования androidx.biometric версии API.

...