FAQ_12_陌生的VERSION.SDK_INT

看到VERSION.SDK_INT不由诧异,这是何物?!java

看API的定义,以下:android

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以下:web

/** 
  * 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中获取系统属性值。 ui

研究一下 SystemProperties 这个类,知道该类没有在API中出现,android并无开放这个API接口。
VERSION.SDK_INT 常量,在开发过程当中仍是比较有用的,为了作到平台兼容性,能够使用该值作一些判断,防止API调用过期或者消失。spa

示例:操作系统

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(平板操做系统)的话,就设置不显示标题:code

if (VERSION.SDK_INT != 11) {  
      getWindow().requestFeature(Window.FEATURE_NO_TITLE);  
}

这些常量位于android.os.Build.VERSION_CODES这个内部类中: orm

相关文章
相关标签/搜索