Home > Mobile >  Why is code introduced in API 29 working on an emulator running API 26?
Why is code introduced in API 29 working on an emulator running API 26?

Time:03-18

I am using BiometricManager (Introduced in Api 29) in a project with a minSdkVersion of 26.

To my surprise, the project is compiling and running, I would have expected this to throw an error at buildtime. Am I missing something? Will this cause issues on release?

Gradle:

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

Class:

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

CodePudding user response:

I am using BiometricManager

No, you are not... at least, not the one that you linked to. You linked to android.hardware.biometrics.BiometricsManager. Your code uses androidx.biometrics.BiometricsManager. Those are not the same class. The Jetpack (androidx) edition will have code that tries to support older devices gracefully.

  • Related