为什么 API 29 中引入的代码可以在模拟器 运行 API 26 上运行?
Why is code introduced in API 29 working on an emulator running API 26?
我在一个minSdkVersion为26的项目中使用BiometricManager(在Api 29中介绍)。
令我惊讶的是,该项目正在编译 运行,我原以为这会在构建时引发错误。我错过了什么吗?这会导致发布问题吗?
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;
}
}
I am using BiometricManager
不,你不是……至少,不是你所链接的人。您链接到 android.hardware.biometrics.BiometricsManager
。您的代码使用 androidx.biometrics.BiometricsManager
。这些不一样class。 Jetpack (androidx
) 版本将包含尝试优雅地支持旧设备的代码。
我在一个minSdkVersion为26的项目中使用BiometricManager(在Api 29中介绍)。
令我惊讶的是,该项目正在编译 运行,我原以为这会在构建时引发错误。我错过了什么吗?这会导致发布问题吗?
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;
}
}
I am using BiometricManager
不,你不是……至少,不是你所链接的人。您链接到 android.hardware.biometrics.BiometricsManager
。您的代码使用 androidx.biometrics.BiometricsManager
。这些不一样class。 Jetpack (androidx
) 版本将包含尝试优雅地支持旧设备的代码。