Build.VERSION.SDK_INT には、フレームワークの SDK バージョンが数値ではいっています。この数値は Build.VERSION_CODES で定数として定義されているので、比較することで任意のビルドバージョンで処理をわけることができます。
- if(Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD_MR1) {
- // 2.3.3 向けの処理
- } else {
- // 2.3.3 以外向けの処理
- }
- if(Integer.parseInt(Build.VERSION.SDK) == Build.VERSION_CODES.CUPCAKE) {
- // for 1.5
- }
- else {
- switch(Build.VERSION.SDK_INT) {
- case Build.VERSION_CODES.DONUT:
- // for 1.6
- break;
- case Build.VERSION_CODES.ECLAIR_MR1:
- // for 2.1
- break;
- case Build.VERSION_CODES.FROYO:
- // for 2.2
- break;
- case Build.VERSION_CODES.GINGERBREAD:
- // for 2.3
- break;
- case Build.VERSION_CODES.GINGERBREAD_MR1:
- // for 2.3.3
- break;
- case Build.VERSION_CODES.HONEYCOMB:
- // for 3.0
- break;
- default:
- break;
- }
- }
・ 主な Build.VERSION_CODES の定数
CUPCAKE
May 2009: Android 1.5
DONUT
September 2009: Android 1.6
ECLAIR
November 2009: Android 2.0
ECLAIR_0_1
December 2009: Android 2.0.1
ECLAIR_MR1
January 2010: Android 2.1
FROYO
June 2010: Android 2.2
GINGERBREAD
November 2010: Android 2.3
GINGERBREAD_MR1
Almost newest version of Android, version 2.3.3
HONEYCOMB
Newest version of Android, version 3.0
# Build.VERSION.SDK に数字以外の文字列が入ると
# NumberFormatException になります。
# 安全なコードにしたいなら、try-catch するか、
# if(Build.VERSION.SDK.equals(String.valueOf(Build.VERSION_CODES.CUPCAKE)))
# なのかなぁ。
# ちなみに、Android Developers Blog: How to have your (Cup)cake and eat it too
# では、parseInt() 使ってました。