您的位置:首页 > 其它

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这个内部类中:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: