FAQ_12_陌生的VERSION.SDK_INT
2012-08-16 11:30
239 查看
看到VERSION.SDK_INT不禁诧异,这是何物?!
看API的定义,如下:
[java]
view plaincopyprint?
public static final int SDK_INT
Since: API Level 4
The user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES.
原来是一个常量值。但是这个常量值可以根据系统的不同而不同哟!为了揭开其神秘的面纱,将源码ctrl如下:
[java]
view plaincopyprint?
/**
* The user-visible SDK version of the framework; its possible
* values are defined in {@link Build.VERSION_CODES}.
*/
public static final int SDK_INT = SystemProperties.getInt(
"ro.build.version.sdk", 0);
可以看出,获取系统属性,类似Java中获取系统属性值。
研究一下 SystemProperties 这个类,知道该类没有在API中出现,android并没有开放这个API接口。
VERSION.SDK_INT 常量,在开发过程中还是比较有用的,为了做到平台兼容性,可以使用该值做一些判断,防止API调用过时或者消失。
示例:
[java]
view plaincopyprint?
int currentVersion = android.os.Build.VERSION.SDK_INT;
if(currentVersion == android.os.Build.VERSION_CODES.ECLAIR_MR1) {
// 2.1
} else if(currentVersion == android.os.Build.VERSION_CODES.FROYO) {
// 2.2
} else if(currentVersion == android.os.Build.VERSION_CODES.GINGERBREAD) {
// 2.3
} else if(currentVersion == android.os.Build.VERSION_CODES.HONEYCOMB) {
// 3.0
}
还如,判断如果设备不是3.0(平板操作系统)的话,就设置不显示标题:
[java]
view plaincopyprint?
if (VERSION.SDK_INT != 11) {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}
这些常量位于android.os.Build.VERSION_CODES这个内部类中:
看API的定义,如下:
[java]
view plaincopyprint?
public static final int SDK_INT
Since: API Level 4
The user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES.
原来是一个常量值。但是这个常量值可以根据系统的不同而不同哟!为了揭开其神秘的面纱,将源码ctrl如下:
[java]
view plaincopyprint?
/**
* The user-visible SDK version of the framework; its possible
* values are defined in {@link Build.VERSION_CODES}.
*/
public static final int SDK_INT = SystemProperties.getInt(
"ro.build.version.sdk", 0);
可以看出,获取系统属性,类似Java中获取系统属性值。
研究一下 SystemProperties 这个类,知道该类没有在API中出现,android并没有开放这个API接口。
VERSION.SDK_INT 常量,在开发过程中还是比较有用的,为了做到平台兼容性,可以使用该值做一些判断,防止API调用过时或者消失。
示例:
[java]
view plaincopyprint?
int currentVersion = android.os.Build.VERSION.SDK_INT;
if(currentVersion == android.os.Build.VERSION_CODES.ECLAIR_MR1) {
// 2.1
} else if(currentVersion == android.os.Build.VERSION_CODES.FROYO) {
// 2.2
} else if(currentVersion == android.os.Build.VERSION_CODES.GINGERBREAD) {
// 2.3
} else if(currentVersion == android.os.Build.VERSION_CODES.HONEYCOMB) {
// 3.0
}
还如,判断如果设备不是3.0(平板操作系统)的话,就设置不显示标题:
[java]
view plaincopyprint?
if (VERSION.SDK_INT != 11) {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}
这些常量位于android.os.Build.VERSION_CODES这个内部类中:
相关文章推荐
- FAQ_12_陌生的VERSION.SDK_INT
- FAQ_12_陌生的VERSION.SDK_INT
- 学点 C 语言(12): 数据类型 - 整型(int)、字符(char)、浮点(float、double)
- C++ FAQ学习笔记 12 章 赋值算符
- FAQ12:每个线程一个消息队列?还是线程中的每个窗口各有一个消息队列?
- FAQ: c++ 函数名后添加 const void function1(int &id) const
- 12_traffic_timer_int(改)
- Visual Studio C/C++ 连续两个 int 数据所占的内存地址之间相差12?
- int(20) 和int (12) 的区别
- 第2章 Java编程基础——FAQ2.11 int和Integer都可以作为整数类型, 那么它们有什么区别?
- Leetcode-12 int to Roman
- FAQ(12):Error querying database. Cause: java.sql.SQLException
- c++error:C2664“intCWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“const char [12]”转换为“LPCTSTR”
- C语言复杂声明:char *(*(**(*(*(*x[5])(int,float))[][12])(double))(short,long))[][173];
- FAQ(52):java.sql.SQLException: Column Index out of range, 0 > 13. at com.mysql.jdbc.ResultSet.getInt
- The SWT FAQ 中文(12)
- 【c++ Primer 】 4.10复习题 12题(int)、(int&)和(int*)
- 写一个函数,要求传入一个1到n位数的随机数值,如传入随机数123456789,返回12345金币67银币89铜币,传入随机数1234,返回0金币12银币34铜币。 提示:推荐Int,Rnd,Mid,L
- 【c++ Primer 】 4.10复习题 12题(int)、(int&)和(int*)
- C++ FAQ Lite[12]--赋值算符(新)