当前位置:首页 > 行业动态 > 正文

安卓判断api版本

在安卓中可通过 Build.VERSION.SDK_INT获取当前API版本号,如 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)判断是否支持指定特性,需结合 @RequiresApi注解或反射处理低版本兼容性,确保核心功能在最低支持版本上稳定

安卓判断API版本的方法

获取当前系统API版本

在安卓开发中,可以通过Build.VERSION.SDK_INT获取当前设备的API版本号(整数),并通过Build.VERSION_CODES中的常量进行对比。

代码示例:

import android.os.Build;
int currentApiLevel = Build.VERSION.SDK_INT;
boolean isLollipopOrAbove = currentApiLevel >= Build.VERSION_CODES.LOLLIPOP; // API 21

常见安卓版本与API级别对应表

安卓版本 API级别 代号 发布时间
Android 5.0 21 LOLLIPOP 2014年10月
Android 5.1 22 LOLLIPOP 2015年3月
Android 6.0 23 MASHMALLOW 2015年10月
Android 7.0 24 NOUGAT 2016年8月
Android 8.0 26 OREO 2017年8月
Android 9.0 28 PIE 2018年8月
Android 10 29 QUARRY_TILE 2019年9月
Android 11 30 REDFISH 2020年9月
Android 12 31 SNOW_CONE 2021年10月
Android 13 33 TIRAMISU 2022年8月

判断API版本的使用场景

  1. 适配新功能:例如在API 23+(Android 6.0)中支持动态权限申请。
  2. 兼容旧版本:例如在API < 21时使用getExternalStoragePublicDirectory()替代getExternalFilesDir()
  3. 避免崩溃:调用高版本API前需判断,否则可能抛出NoSuchMethodExceptionNoClassDefFoundError

代码实践示例

场景1:判断是否支持分屏多窗口(API 24+)

安卓判断api版本

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    // 启用分屏模式
    enterPictureInPictureMode();
} else {
    // 低版本提示或降级处理
    showToast("当前系统不支持分屏功能");
}

场景2:判断是否支持透明状态栏(API 19+)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    // 设置透明状态栏
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}

相关问题与解答

问题1:如何获取当前系统的Android版本名称(如”10″或”13″)?

解答:
通过Build.VERSION.RELEASE可以获取版本名称字符串,

安卓判断api版本

String versionName = Build.VERSION.RELEASE; // 返回类似"13"或"10"

注意:该值可能包含非整数格式(如”13.0.1″),需自行解析为整数时建议使用Build.VERSION.SDK_INT


问题2:如何兼容不同API版本的权限申请?

解答:

安卓判断api版本

  • API < 23(Android 6.0):权限在安装时统一授权,无需动态申请。
  • API >= 23:需在运行时动态申请敏感权限,使用ActivityCompat.requestPermissions()
    示例代码:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
      // 检查并请求权限
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
          ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
      }
    } else {
      // 低版本直接操作
      writeToExternalStorage();
    }