android 系统知识之Build.VERSION.SDK_INT 兼容介绍
2015-12-22 11:47
489 查看
尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的。向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK。可以在高SDK上开发,并在程序中作版本判断,低版本运行环境使用旧的API。
例如要开发一个显示通话记录的程序,需要兼容1.6~2.2,我们知道不同的平台SDK level不同,1.5是3,1.6是4,2.2是8。对应的可以使用android.os.Build进行判断。源代码如下:
Java代码
if(Build.VERSION.SDK_INT <= 4)
{
Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
}
Java代码
android.os.Build
Java代码
Build.BOARD // 主板
Build.BRAND // android系统定制商
Build.CPU_ABI // cpu指令集
Build.DEVICE // 设备参数
Build.DISPLAY // 显示屏参数
Build.FINGERPRINT // 硬件名称
Build.HOST
Build.ID // 修订版本列表
Build.MANUFACTURER // 硬件制造商
Build.MODEL // 版本
Build.PRODUCT // 手机制造商
Build.TAGS // 描述build的标签
Build.TIME
Build.TYPE // builder类型
Build.USER
// 运行结果
/*
board: unknown
brand: generic
cpu abi: armeabi
device: generic
display: google_sdk-eng 2.1 ERD79 22607 test-keys
finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
host: genki.mtv.corp.google.com
id: ERD79
manufacturer: unknown
model: google_sdk
product: google_sdk
tags: test-keys
time: 1261185425000
type: eng
user: android-build
*/
Build.BOARD // 主板
Build.BRAND // android系统定制商
Build.CPU_ABI // cpu指令集
Build.DEVICE // 设备参数
Build.DISPLAY // 显示屏参数
Build.FINGERPRINT // 硬件名称
Build.HOST
Build.ID // 修订版本列表
Build.MANUFACTURER // 硬件制造商
Build.MODEL // 版本
Build.PRODUCT // 手机制造商
Build.TAGS // 描述build的标签
Build.TIME
Build.TYPE // builder类型
Build.USER
// 运行结果
/*
board: unknown
brand: generic
cpu abi: armeabi
device: generic
display: google_sdk-eng 2.1 ERD79 22607 test-keys
finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
host: genki.mtv.corp.google.com
id: ERD79
manufacturer: unknown
model: google_sdk
product: google_sdk
tags: test-keys
time: 1261185425000
type: eng
user: android-build
*/
Build.VERSION
Java代码
// 当前开发代号
Build.VERSION.CODENAME
// 源码控制版本号
Build.VERSION.INCREMENTAL
// 版本字符串
Build.VERSION.RELEASE
// 版本号
Build.VERSION.SDK
// 版本号
Build.VERSION.SDK_INT
// 结果
/*
REL
22607
2.1
7
7
*/
// Build.VERSION.SDK_INT可与switch搭配用
switch (Build.VERSION.SDK_INT) {
case Build.VERSION_CODES.BASE: // 1.0
break;
case Build.VERSION_CODES.BASE_1_1: // 1.1
break;
case Build.VERSION_CODES.CUPCAKE: // 1.5
break;
case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
break;
case Build.VERSION_CODES.DONUT: // 1.6
break;
case Build.VERSION_CODES.ECLAIR: // 2.0
break;
case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
break;
case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
break;
}
// 当前开发代号
Build.VERSION.CODENAME
// 源码控制版本号
Build.VERSION.INCREMENTAL
// 版本字符串
Build.VERSION.RELEASE
// 版本号
Build.VERSION.SDK
// 版本号
Build.VERSION.SDK_INT
// 结果
/*
REL
22607
2.1
7
7
*/
// Build.VERSION.SDK_INT可与switch搭配用
switch (Build.VERSION.SDK_INT) {
case Build.VERSION_CODES.BASE: // 1.0
break;
case Build.VERSION_CODES.BASE_1_1: // 1.1
break;
case Build.VERSION_CODES.CUPCAKE: // 1.5
break;
case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
break;
case Build.VERSION_CODES.DONUT: // 1.6
break;
case Build.VERSION_CODES.ECLAIR: // 2.0
break;
case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
break;
case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
break;
}
例如要开发一个显示通话记录的程序,需要兼容1.6~2.2,我们知道不同的平台SDK level不同,1.5是3,1.6是4,2.2是8。对应的可以使用android.os.Build进行判断。源代码如下:
Java代码
if(Build.VERSION.SDK_INT <= 4)
{
Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "version" + Build.VERSION.RELEASE+ " :" + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();
}
Java代码
android.os.Build
Java代码
Build.BOARD // 主板
Build.BRAND // android系统定制商
Build.CPU_ABI // cpu指令集
Build.DEVICE // 设备参数
Build.DISPLAY // 显示屏参数
Build.FINGERPRINT // 硬件名称
Build.HOST
Build.ID // 修订版本列表
Build.MANUFACTURER // 硬件制造商
Build.MODEL // 版本
Build.PRODUCT // 手机制造商
Build.TAGS // 描述build的标签
Build.TIME
Build.TYPE // builder类型
Build.USER
// 运行结果
/*
board: unknown
brand: generic
cpu abi: armeabi
device: generic
display: google_sdk-eng 2.1 ERD79 22607 test-keys
finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
host: genki.mtv.corp.google.com
id: ERD79
manufacturer: unknown
model: google_sdk
product: google_sdk
tags: test-keys
time: 1261185425000
type: eng
user: android-build
*/
Build.BOARD // 主板
Build.BRAND // android系统定制商
Build.CPU_ABI // cpu指令集
Build.DEVICE // 设备参数
Build.DISPLAY // 显示屏参数
Build.FINGERPRINT // 硬件名称
Build.HOST
Build.ID // 修订版本列表
Build.MANUFACTURER // 硬件制造商
Build.MODEL // 版本
Build.PRODUCT // 手机制造商
Build.TAGS // 描述build的标签
Build.TIME
Build.TYPE // builder类型
Build.USER
// 运行结果
/*
board: unknown
brand: generic
cpu abi: armeabi
device: generic
display: google_sdk-eng 2.1 ERD79 22607 test-keys
finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys
host: genki.mtv.corp.google.com
id: ERD79
manufacturer: unknown
model: google_sdk
product: google_sdk
tags: test-keys
time: 1261185425000
type: eng
user: android-build
*/
Build.VERSION
Java代码
// 当前开发代号
Build.VERSION.CODENAME
// 源码控制版本号
Build.VERSION.INCREMENTAL
// 版本字符串
Build.VERSION.RELEASE
// 版本号
Build.VERSION.SDK
// 版本号
Build.VERSION.SDK_INT
// 结果
/*
REL
22607
2.1
7
7
*/
// Build.VERSION.SDK_INT可与switch搭配用
switch (Build.VERSION.SDK_INT) {
case Build.VERSION_CODES.BASE: // 1.0
break;
case Build.VERSION_CODES.BASE_1_1: // 1.1
break;
case Build.VERSION_CODES.CUPCAKE: // 1.5
break;
case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
break;
case Build.VERSION_CODES.DONUT: // 1.6
break;
case Build.VERSION_CODES.ECLAIR: // 2.0
break;
case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
break;
case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
break;
}
// 当前开发代号
Build.VERSION.CODENAME
// 源码控制版本号
Build.VERSION.INCREMENTAL
// 版本字符串
Build.VERSION.RELEASE
// 版本号
Build.VERSION.SDK
// 版本号
Build.VERSION.SDK_INT
// 结果
/*
REL
22607
2.1
7
7
*/
// Build.VERSION.SDK_INT可与switch搭配用
switch (Build.VERSION.SDK_INT) {
case Build.VERSION_CODES.BASE: // 1.0
break;
case Build.VERSION_CODES.BASE_1_1: // 1.1
break;
case Build.VERSION_CODES.CUPCAKE: // 1.5
break;
case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version
break;
case Build.VERSION_CODES.DONUT: // 1.6
break;
case Build.VERSION_CODES.ECLAIR: // 2.0
break;
case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1
break;
case Build.VERSION_CODES.ECLAIR_MR1: // 2.1
break;
}
相关文章推荐
- Juery.Form
- 关于UITableView的一些细碎知识点总结
- Android 数据库查询query函数参数解析
- 129,NSValue的应用
- Qt Quick QML
- OC-UI-006.NSBundle类 用于查找应用的文件夹位置
- res/values-11/styles.xml与res/values-14/styles.xml 报错解决
- 利用颜色生成UIImage
- Range Sum Query - Immutable
- 单击双击手势(UITapGestureRecognizer)
- echarts折线图纵横轴采用类似定义{value}KB/s单位过长被遮挡
- Arduino - 蓝牙串口透传模块:HC-06从机
- OC-UI-005.transform属性,用于平移,放大,旋转
- UIAlertController使用方法、UIAlertAction使用方法(8.0起新控件)
- Leetcode: Verify Preorder Sequence in Binary Search Tree
- Word Pattern pattern = "abba", str = "dog cat cat dog" should return true
- OC-UI-004.纯代码编写按钮的简单方法
- OC-UI-003.开始简单的动画效果,2种方式
- UIView block动画
- AddComponentMenu ContextMenu ExecuteInEditMode HideInInspector NonSerialized RPC RequireComponent Se