Android Build.VERSION.SDK_INT兼容介紹

盡管Android向下兼容不好,但是一個程序還是可以在多個平臺上跑的。向下兼容不好,接口改變,新的平臺上不能用舊的API,舊的平臺更不可能用新的API,不等於一個平臺需要一個APK。可以在高SDK上開發,並在程序中作版本判斷,低版本運行環境使用舊的API。

例如要開發一個顯示通話記錄的程序,需要兼容1.6~2.2,我們知道不同的平臺SDK level不同,1.5是3,1.6是4,2.2是8。對應的可以使用android.os.Build進行判斷。源代碼如下:

Java代碼 收藏代碼

  1. if(Build.VERSION.SDK_INT <= 4)

  2. {

  3. Toast.makeText(this, “version” + Build.VERSION.RELEASE+ ” :” + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();

  4. }

  5. else

  6. {

  7. Toast.makeText(this, “version” + Build.VERSION.RELEASE+ ” :” + Build.VERSION.SDK_INT, Toast.LENGTH_SHORT).show();

  8. }

    轉自:https://www.linuxidc.com/Linux/2011-11/48325.htm

    Java代碼 收藏代碼

    1. android.os.Build

    2. Java代碼

    3. Build.BOARD // 主板

    4. Build.BRAND // android系統定制商

    5. Build.CPU_ABI // cpu指令集

    6. Build.DEVICE // 設備參數

    7. Build.DISPLAY // 顯示屏參數

    8. Build.FINGERPRINT // 硬件名稱

    9. Build.HOST

    10. Build.ID // 修訂版本列表

    11. Build.MANUFACTURER // 硬件制造商

    12. Build.MODEL // 版本

    13. Build.PRODUCT // 手機制造商

    14. Build.TAGS // 描述build的標簽

    15. Build.TIME

    16. Build.TYPE // builder類型

    17. Build.USER

    18. // 運行結果

    19. /*

    20. board: unknown

    21. brand: generic

    22. cpu abi: armeabi

    23. device: generic

    24. display: google_sdk-eng 2.1 ERD79 22607 test-keys

    25. finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys

    26. host: genki.mtv.corp.google.com

    27. id: ERD79

    28. manufacturer: unknown

    29. model: google_sdk

    30. product: google_sdk

    31. tags: test-keys

    32. time: 1261185425000

    33. type: eng

    34. user: android-build

    35. */

    36. Build.BOARD // 主板

    37. Build.BRAND // android系統定制商

    38. Build.CPU_ABI // cpu指令集

    39. Build.DEVICE // 設備參數

    40. Build.DISPLAY // 顯示屏參數

    41. Build.FINGERPRINT // 硬件名稱

    42. Build.HOST

    43. Build.ID // 修訂版本列表

    44. Build.MANUFACTURER // 硬件制造商

    45. Build.MODEL // 版本

    46. Build.PRODUCT // 手機制造商

    47. Build.TAGS // 描述build的標簽

    48. Build.TIME

    49. Build.TYPE // builder類型

    50. Build.USER

    51. // 運行結果

    52. /*

    53. board: unknown

    54. brand: generic

    55. cpu abi: armeabi

    56. device: generic

    57. display: google_sdk-eng 2.1 ERD79 22607 test-keys

    58. finger print: generic/google_sdk/generic/:2.1/ERD79/22607:eng/test-keys

    59. host: genki.mtv.corp.google.com

    60. id: ERD79

    61. manufacturer: unknown

    62. model: google_sdk

    63. product: google_sdk

    64. tags: test-keys

    65. time: 1261185425000

    66. type: eng

    67. user: android-build

    68. */

    69. Build.VERSION

    70. Java代碼

    71. // 當前開發代號

    72. Build.VERSION.CODENAME

    73. // 源碼控制版本號

    74. Build.VERSION.INCREMENTAL

    75. // 版本字符串

    76. Build.VERSION.RELEASE

    77. // 版本號

    78. Build.VERSION.SDK

    79. // 版本號

    80. Build.VERSION.SDK_INT

    81. // 結果

    82. /*

    83. REL

    84. 22607

    85. 2.1

    86. 7

    87. 7

    88. */

    89. // Build.VERSION.SDK_INT可與switch搭配用

    90. switch (Build.VERSION.SDK_INT) {

    91. case Build.VERSION_CODES.BASE: // 1.0

    92. break;

    93. case Build.VERSION_CODES.BASE_1_1: // 1.1

    94. break;

    95. case Build.VERSION_CODES.CUPCAKE: // 1.5

    96. break;

    97. case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version

    98. break;

    99. case Build.VERSION_CODES.DONUT: // 1.6

    100. break;

    101. case Build.VERSION_CODES.ECLAIR: // 2.0

    102. break;

    103. case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1

    104. break;

    105. case Build.VERSION_CODES.ECLAIR_MR1: // 2.1

    106. break;

    107. }

    108. // 當前開發代號

    109. Build.VERSION.CODENAME

    110. // 源碼控制版本號

    111. Build.VERSION.INCREMENTAL

    112. // 版本字符串

    113. Build.VERSION.RELEASE

    114. // 版本號

    115. Build.VERSION.SDK

    116. // 版本號

    117. Build.VERSION.SDK_INT

    118. // 結果

    119. /*

    120. REL

    121. 22607

    122. 2.1

    123. 7

    124. 7

    125. */

    126. // Build.VERSION.SDK_INT可與switch搭配用

    127. switch (Build.VERSION.SDK_INT) {

    128. case Build.VERSION_CODES.BASE: // 1.0

    129. break;

    130. case Build.VERSION_CODES.BASE_1_1: // 1.1

    131. break;

    132. case Build.VERSION_CODES.CUPCAKE: // 1.5

    133. break;

    134. case Build.VERSION_CODES.CUR_DEVELOPMENT: // current dev version

    135. break;

    136. case Build.VERSION_CODES.DONUT: // 1.6

    137. break;

    138. case Build.VERSION_CODES.ECLAIR: // 2.0

    139. break;

    140. case Build.VERSION_CODES.ECLAIR_0_1: // 2.0.1

    141. break;

    142. case Build.VERSION_CODES.ECLAIR_MR1: // 2.1

    143. break;

    144. }

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *