前言
~
由于经常需要对SDK的版本进行不同适配,需要知道SDK的版本号,这里为了方便以后查看,以表格的形式记录下。仅仅记录4.0以上的Android版本,毕竟4.0以上的普及率已经达到了97.4%。
1.SDK版本表格
~ 基于Android 6.0(API Level 23)
发布日期 | API Level | Android版本 | VERSION_CODES | 英文名称 | 中文名称 |
---|---|---|---|---|---|
2011.10 | 14 | 4.0 | ICE_CREAM_SANDWICH | IceCreamSandwich | 冰淇淋三明治 |
2011.12 | 15 | 4.0.3 | ICE_CREAM_SANDWICH_MR1 | IceCreamSandwich | 冰淇淋三明治 |
2012.06 | 16 | 4.1 | JELLY_BEAN | Jelly Bean | 果冻豆 |
2012.11 | 17 | 4.2 | JELLY_BEAN_MR1 | Jelly Bean | 果冻豆 |
2013.07 | 18 | 4.3 | JELLY_BEAN_MR2 | Jelly Bean | 果冻豆 |
2014.06 | 19 | 4.4 | KITKAT | KitKat | 奇巧巧克力 |
2014.09 | 20 | 4.4W | KITKAT_WATCH | KitKat Wear | 奇巧巧克力-穿戴设备 |
2014.11 | 21 | 5.0 | L或者LOLLIPOP | Lollipop | 棒棒糖 |
2015.03 | 22 | 5.1 | LOLLIPOP_MR1 | Lollipop | 棒棒糖 |
2015.10 | 23 | 6.0 | M | Marshmallow | 棉花糖 |
未发布 | 24 | 6.X | N | Nougat | 牛轧糖 |
如果需要更详细的NDK版本看这里:带NDK版本的SDK表格
2.SDK版本号的用处
~
2.1.获取版本号
~
-
为什么要获取版本号:
有时候发布的APP出现异常,我们捕获异常,需要将异常携带该设备的SDK版本号上传到服务器,方便开发者进行异常分析。 - 如何获取发布版本号以及API Level
/**
* 获取Android发布的版本
*/
public static String getVersion() {
return android.os.Build.VERSION.RELEASE;
}
/**
* 获取SDK的API Level
* @return
*/
public static int getSDK() {
return android.os.Build.VERSION.SDK_INT;
}
2.2.根据版本号来适配
~
- 情况一.Android 6.0的权限系统:
protected boolean hasPermission(String permission) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1)
return (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED);
return true;
}
判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。Build.VERSION.SDK_INT是指当前设备的API Level。
- 情况二.通知的部分属性:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
builder.setSubText("it is really basic");
}
通知的副标题需要API Level 16才能使用。
3.后记
- 由于版本的更新,该表格可能需要及时更新
- 使用版本号的情况还有很多,这里只是一小部分,仅供参考。
- 当然API Level也可以直接写成数字,不过不建议大家这样做,这里你可能记得16数字的含义,可是在其他地方使用数字你可能就不记得了,所以为了规范还是写VERSION_CODES吧,毕竟这样逼格也更高!
if (Build.VERSION.SDK_INT >= 16) {
builder.setSubText("it is really basic");
}
网友评论