Build.VERSION.SDK_INT
获取当前API版本号,如
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
判断是否支持指定特性,需结合
@RequiresApi
注解或反射处理低版本兼容性,确保核心功能在最低支持版本上稳定
在安卓开发中,可以通过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级别 | 代号 | 发布时间 |
---|---|---|---|
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月 |
getExternalStoragePublicDirectory()
替代getExternalFilesDir()
。NoSuchMethodException
或NoClassDefFoundError
。场景1:判断是否支持分屏多窗口(API 24+)
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); }
解答:
通过Build.VERSION.RELEASE
可以获取版本名称字符串,
String versionName = Build.VERSION.RELEASE; // 返回类似"13"或"10"
注意:该值可能包含非整数格式(如”13.0.1″),需自行解析为整数时建议使用Build.VERSION.SDK_INT
。
解答:
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(); }