Hướng dẫn này trình bày cách lấy API Level (SDK_INT) và tên phiên bản Android (codename) của thiết bị đang chạy ứng dụng. Thông tin này hữu ích để xử lý tương thích ngược (backward compatibility) hoặc bật/tắt tính năng theo phiên bản.
Các bước thực hiện
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.
Bước 2: Layout (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_above="@id/button"
android:layout_centerInParent="true"
android:layout_marginBottom="12sp"
android:textSize="24sp"
android:textStyle="bold|italic" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="16sp"
android:textStyle="bold"
android:text="Lấy phiên bản Android API" />
</RelativeLayout>
Bước 3: Code MainActivity (src/MainActivity.java)
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button button;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
button = findViewById(R.id.button);
button.setOnClickListener(v -> {
int apiLevel = Build.VERSION.SDK_INT;
String versionName = getAndroidVersionName(apiLevel);
textView.setText("API Level: " + apiLevel + "\n" + versionName);
});
}
// Chuyển API level thành tên phiên bản dễ đọc
private String getAndroidVersionName(int apiLevel) {
switch (apiLevel) {
case Build.VERSION_CODES.BASE: return "1.0 (Base)";
case Build.VERSION_CODES.BASE_1_1: return "1.1 (Base)";
case Build.VERSION_CODES.CUPCAKE: return "1.5 (Cupcake)";
case Build.VERSION_CODES.DONUT: return "1.6 (Donut)";
case Build.VERSION_CODES.ECLAIR: return "2.0-2.1 (Eclair)";
case Build.VERSION_CODES.FROYO: return "2.2 (Froyo)";
case Build.VERSION_CODES.GINGERBREAD: return "2.3 (Gingerbread)";
case Build.VERSION_CODES.HONEYCOMB: return "3.0-3.2 (Honeycomb)";
case Build.VERSION_CODES.ICE_CREAM_SANDWICH: return "4.0 (Ice Cream Sandwich)";
case Build.VERSION_CODES.JELLY_BEAN: return "4.1-4.3 (Jelly Bean)";
case Build.VERSION_CODES.KITKAT: return "4.4 (KitKat)";
case Build.VERSION_CODES.LOLLIPOP: return "5.0-5.1 (Lollipop)";
case Build.VERSION_CODES.M: return "6.0 (Marshmallow)";
case Build.VERSION_CODES.N: return "7.0-7.1 (Nougat)";
case Build.VERSION_CODES.O: return "8.0-8.1 (Oreo)";
case Build.VERSION_CODES.P: return "9.0 (Pie)";
case Build.VERSION_CODES.Q: return "10.0 (Android 10)";
case Build.VERSION_CODES.R: return "11.0 (Android 11)";
case Build.VERSION_CODES.S: return "12.0 (Android 12)";
case Build.VERSION_CODES.S_V2: return "12L (Android 12L)";
case Build.VERSION_CODES.TIRAMISU: return "13.0 (Android 13)";
case Build.VERSION_CODES.UPSIDE_DOWN_CAKE: return "14.0 (Android 14)";
case Build.VERSION_CODES.VANILLA_ICE_CREAM: return "15.0 (Android 15)";
default:
return "Android " + apiLevel + " (Phiên bản mới hơn)";
}
}
}
Cải tiến: Code gốc dùng switch-case hardcoded số (14, 15, 16...). Phiên bản trên dùng Build.VERSION_CODES.* constants - an toàn, rõ ràng, tự cập nhật khi compile với SDK mới.
Bước 4: Cấu hình AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Chạy ứng dụng
Kết nối thiết bị, nhấn Run. Nhấn nút để hiển thị API Level và tên phiên bản.

Các trường hữu ích trong Build.VERSION
| Trường | Kiểu | Mô tả |
|---|---|---|
SDK_INT |
int | API Level (ví dụ: 33, 34) |
RELEASE |
String | Phiên bản user-visible (ví dụ: "14", "13", "12") |
CODENAME |
String | Tên mã nội bộ (ví dụ: "REL", "UpsideDownCake") |
INCREMENTAL |
String | Build number nội bộ |
SECURITY_PATCH |
String | Ngày bản vá bảo mật (yyyy-MM-dd) |
Kiểm tra phiên bản trong code (Best Practice)
// Cách đúng: dùng Build.VERSION_CODES
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// Android 6.0+ (API 23+): Runtime permissions
requestPermissions(...);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// Android 7.0+ (API 24+): Multi-window, Direct Reply notifications
}
// Kiểm tra range
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
&& Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// Chỉ Android 5.0 - 5.1
}
Build.VERSION_CODES mới (API 31+)
Từ Android 10 (Q), Google dùng tên bánh kẹo nội bộ nhưng công khai chỉ gọi "Android 10, 11, 12...". Các hằng số Build.VERSION_CODES vẫn tồn tại:
Q= 29 (Android 10)R= 30 (Android 11)S= 31 (Android 12)S_V2= 32 (Android 12L)TIRAMISU= 33 (Android 13)UPSIDE_DOWN_CAKE= 34 (Android 14)VANILLA_ICE_CREAM= 35 (Android 15)