SDKのビルドバージョンの取得
「Build.VERSION.SDK_INT」によりビルド時のバージョンを取得できます。
プログラムによっては、このバージョンとAPIのバージョンにより
分岐処理をすることになるケースもあると思います。
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Build;
//ログファイル出力
import android.util.Log;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//相対座標を設定できるようにレイアウトを設定
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//座標の初期設定
int x = 0;
int y = 0;
int width = 0;
int height = 0;
x = 50;
y = 50;
width = 350;
height = 60;
RelativeLayout.LayoutParams obj = getLayoutObject(width, height);
obj.leftMargin=x;
obj.topMargin=y;
int iVersion=0;
iVersion=getAPILevel();
TextView txt = new TextView(this);
txt.setText("Version API Level : " + String.valueOf(iVersion));
txt.setTextSize(20.0f);
txt.setBackgroundColor(Color.argb(70, 208, 208, 255));
txt.setTextColor(Color.BLACK);
layout.addView(txt, obj);
}
private int getAPILevel()
{
int iVersion=0;
//バージョンを取得
iVersion=Build.VERSION.SDK_INT;
Log.d("Build.VERSION.SDK_INT", String.valueOf(iVersion));
if(iVersion > 23)
{
Log.d("Level", "Marchmallo以上");
}
else if(iVersion == 23)
{
Log.d("Level", "Marchmallo");
}
else if(iVersion >= Build.VERSION_CODES.LOLLIPOP)
{
Log.d("Level", "LOLLIPOP");
}
else if(iVersion >= Build.VERSION_CODES.KITKAT)
{
Log.d("Level", "KITKAT");
}
else if(iVersion >= Build.VERSION_CODES.JELLY_BEAN)
{
Log.d("Level", "JELLY_BEAN");
}
else if(iVersion >= 14)
{
Log.d("Level", "ICE_CREAM");
}
else if(iVersion >= Build.VERSION_CODES.HONEYCOMB)
{
Log.d("Level", "HONEYCOMB");
}
else if(iVersion >= Build.VERSION_CODES.GINGERBREAD)
{
Log.d("Level", "GINGERBREAD");
}
else if(iVersion >= Build.VERSION_CODES.FROYO)
{
Log.d("Level", "FROYO");
}
else if(iVersion >= Build.VERSION_CODES.ECLAIR)
{
Log.d("Level", "ECLAIR");
}
else if(iVersion >= Build.VERSION_CODES.CUPCAKE)
{
Log.d("Level", "CUPCAKE");
}
else if(iVersion >= Build.VERSION_CODES.BASE)
{
Log.d("Level", "BASE");
}
else
{
Log.d("Level", "不明");
}
return iVersion;
}
//レイアウトを決定するオブジェクトを生成し渡します
private RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
Androidはバージョンによってモジュールの拡張など変更があります。
このため、作成したアプリの使用しているメソッド等に関して
バージョンによっては、プログラムの引数の個数が違ったり、
別のメソッド名になるなど仕様変更もあります。
「Build.VERSION.SDK_INT」は
アプリを利用している各ユーザが使用している端末のAndroidOSのバージョンを返すことから
ユーザが使用しているアプリのOSバージョンにあったプログラム分岐処理を実装することができます。
これにより、どのユーザが使用しても動作可能なプログラムを各準備ができるようになっています。
実行結果
|
|