Build.VERSION.SDK_INT是系統的版本,Build.VERSION_CODES.GINGERBREAD是版本號。
到VERSION.SDK_INT不禁詫異,這是何物?!
看API的定義,如下:
- 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如下:
- /**
- * 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調用過時或者消失。
示例:
- 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(平板操作系統)的話,就設置不顯示標題
- if (VERSION.SDK_INT != 11) {
- getWindow().requestFeature(Window.FEATURE_NO_TITLE);
- }
這些常量位於android.os.Build.VERSION_CODES這個內部類中: