Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD


Build.VERSION.SDK_INT是系統的版本,Build.VERSION_CODES.GINGERBREAD是版本號。

 

到VERSION.SDK_INT不禁詫異,這是何物?!

看API的定義,如下:

 

[java]  view plain copy print ?
 
  1. public static final int SDK_INT  
  2.   
  3. Since: API Level 4  
  4. The user-visible SDK version of the framework; its possible values are defined in Build.VERSION_CODES.  


原來是一個常量值。但是這個常量值可以根據系統的不同而不同喲!為了揭開其神秘的面紗,將源碼ctrl如下:

 

 

[java]  view plain copy print ?
 
  1. /** 
  2.   * The user-visible SDK version of the framework; its possible 
  3.   * values are defined in {@link Build.VERSION_CODES}. 
  4.   */  
  5.   public static final int SDK_INT = SystemProperties.getInt(  
  6.                "ro.build.version.sdk", 0);  


可以看出,獲取系統屬性,類似Java中獲取系統屬性值。

 

研究一下 SystemProperties 這個類,知道該類沒有在API中出現,Android並沒有開放這個API接口。
VERSION.SDK_INT 常量,在開發過程中還是比較有用的,為了做到平台兼容性,可以使用該值做一些判斷,防止API調用過時或者消失。

示例:

 

  1. int currentVersion = android.os.Build.VERSION.SDK_INT;  
  2. if(currentVersion == android.os.Build.VERSION_CODES.ECLAIR_MR1) {  
  3.     // 2.1  
  4. else if(currentVersion == android.os.Build.VERSION_CODES.FROYO) {  
  5.     // 2.2  
  6. else if(currentVersion == android.os.Build.VERSION_CODES.GINGERBREAD) {  
  7.     // 2.3  
  8. else if(currentVersion == android.os.Build.VERSION_CODES.HONEYCOMB) {  
  9.     // 3.0  
  10. }  

還如,判斷如果設備不是3.0(平板操作系統)的話,就設置不顯示標題

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

這些常量位於android.os.Build.VERSION_CODES這個內部類中:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM