Почему код, представленный в API 29, работает на эмуляторе с API 26?

Я использую Биометрический менеджер (представленный в API 29) в проекте с minSdkVersion 26.

К моему удивлению, проект компилируется и работает, я ожидал, что это вызовет ошибку во время сборки. Я что-то упускаю? Не вызовет ли это проблем при выпуске?

Грейдл:

    defaultConfig {
 
    minSdkVersion 26
    targetSdkVersion 31
    versionCode 1
    versionName "1.0"

Класс:

       import androidx.biometric.BiometricManager;
       import androidx.biometric.BiometricPrompt;

      
public BiometricPromptClass(Activity activity) {
    this.context = activity.getBaseContext();
    this.activity = activity;
}

public int getDeviceBiometricStatus(){
    return getBiometricManager().canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_WEAK);
}

public boolean CheckIfCanAuthenticate() {
    if (getDeviceBiometricStatus() == BiometricManager.BIOMETRIC_SUCCESS) {
        return true;
    } else {
        failureCode = getDeviceBiometricStatus();
        return false;
    }
}

Работает, потому что minSdkVersion26. Может не работать как надо, но работает.

marco 18.03.2022 14:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

I am using BiometricManager

Нет, ты не... по крайней мере, не тот, на которого ты ссылался. Вы связались с android.hardware.biometrics.BiometricsManager. В вашем коде используется androidx.biometrics.BiometricsManager. Это не тот класс. Версия Jetpack (androidx) будет иметь код, который пытается корректно поддерживать старые устройства.

Хорошее место, да, это ответ - неправильный импорт. Такую простую вещь упустить!

Jake Dove 18.03.2022 15:03

Другие вопросы по теме