2019/02/06
※最新の情報に更新しました(2015年2月22日)
androidは日々進化しています。いろんな機能が追加されていくそのスピード感は素晴らしいと思うのですが、アプリを作っていると、いろんなOSのバージョンに対応する必要があるので結構大変です。今でも2.xを使っている人は多いらしいし(実は僕もです。。)、最新の4.xも増えていると思います。一番困るのがハードキーのmenuボタンが無くなって、その替わりにaction barというUIが実装されたことです。勝手にボタンを無くすなよ!と言いたいところですが、開発者の端くれの端くれとしてはandroid様に従うしかないので、なんとかついて行くしかありません。。
そこで今回は、androidのOSのバージョンによってプログラムの実行内容が変わるように、if文を使って分岐させる方法を防備録として書いておきます。
sponsored link
機種のAPIレベルを取得する
機種によって対応するには、まずはその機種のOSのバージョン(APIレベル)を取得する必要があります。びっくりするぐらい簡単にできます。
Build.VERSION.SDK_INT
このコードで、その機種のAPIレベルが取得できます。14とか17とかのあれです(一覧表は下を参照)。この方法で取得したAPIレベルの値はint型なので、if文を使ってこんな風に分岐させることができます。
if(Build.VERSION.SDK_INT <= 10){ //APIレベル10以前の機種の場合の処理 }else if(Build.VERSION.SDK_INT >= 11){ //APIレベル11以降の機種の場合の処理 }
OSのバージョンからAPIレベルを取得する
ただし上のコードでは、10とか11とかがどのバージョンを指しているのかよく分からないし、いちいち覚えていない人も多いと思います。そこで、こんな風に各androidのバージョンのコードネームからAPIレベルを取得する方法があります。
Build.VERSION_CODES.HONEYCOMB
このコードで11というint型の数値を取得します。つまり上記の分岐処理はこう書き換えられます。
if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1){ //APIレベル10以前の機種の場合の処理 }else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ //APIレベル11以降の機種の場合の処理 }
バージョン & APIレベル一覧表
androidのバージョンとAPIレベル、それを取得するためのコードの一覧表です。
android バージョン | コードネーム | APIレベル | Build.VERSION_CODES. |
---|---|---|---|
1.0 | 1 | BASE | |
1.1 | 2 | BASE_1_1 | |
1.5 | Cupcake | 3 | CUPCAKE |
1.6 | Donut | 4 | DONUT |
2.0 | Eclair | 5 | ECLAIR |
2.0.1 | 6 | ECLAIR_0_1 | |
2.1 | 7 | ECLAIR_MR1 | |
2.2 | Froyo | 8 | FROYO |
2.3 – 2.3.2 | Gingerbread | 9 | GINGERBREAD |
2.3.3 – 2.3.7 | 10 | GINGERBREAD_MR1 | |
3.0 | Honeycomb | 11 | HONEYCOMB |
3.1 | 12 | HONEYCOMB_MR1 | |
3.2 | 13 | HONEYCOMB_MR2 | |
4.0 – 4.0.2 | IceCreamSandwich | 14 | ICE_CREAM_SANDWICH |
4.0.3 – 4.0.4 | 15 | ICE_CREAM_SANDWICH_MR1 | |
4.1 | JellyBean | 16 | JELLY_BEAN |
4.2 | 17 | JELLY_BEAN_MR1 | |
4.3 | 18 | JELLY_BEAN_MR2 | |
4.4 | Kitkat | 19 | KITKAT |
5.0 | Lollipop | 21 | LOLLIPOP |
※APIレベル20はウェアラブル端末専用
参考:<uses-sdk> | Android Developers
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス