Jawaban:
Periksa android.os.Build.VERSION
.
CODENAME
: Codename pengembangan saat ini, atau string "REL" jika ini adalah rilis build.INCREMENTAL
: Nilai internal yang digunakan oleh kontrol sumber yang mendasarinya untuk mewakili build ini.RELEASE
: String versi yang dapat dilihat pengguna.
Contoh cara menggunakannya:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
Build.Version adalah tempat untuk data ini. Berikut ini cuplikan kode untuk cara memformatnya.
public String getAndroidVersion() {
String release = Build.VERSION.RELEASE;
int sdkVersion = Build.VERSION.SDK_INT;
return "Android SDK: " + sdkVersion + " (" + release +")";
}
Sepertinya ini "Android SDK: 19 (4.4.4)"
Build.VERSION.RELEASE;
Itu akan memberi Anda angka aktual dari versi Anda; alias 2.3.3 atau 2.2. Masalah dengan menggunakan Build.VERSION.SDK_INT adalah jika Anda memiliki ponsel yang di-rooting atau custom rom, Anda mungkin tidak memiliki OS standar (alias android saya menjalankan 2.3.5) dan itu akan menghasilkan nol saat menggunakan Build.VERSION.SDK_INT jadi Build.VERSION.RELEASE akan bekerja apa pun yang terjadi!
Untuk memeriksa versi perangkat yang lebih besar atau sama dengan Marshmallow, gunakan kode ini.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
}
untuk mengecek orang lain cukup ubah VERSION_CODES seperti,
K untuk kitkat,
L untuk loolipop N untuk Nougat dan seterusnya ...
Anda dapat mengetahui versi Android yang melihatnya Build.VERSION
.
Dokumentasi merekomendasikan Anda memeriksa Build.VERSION.SDK_INT
nilai-nilai di Build.VERSION_CODES
.
Ini bagus selama Anda menyadari bahwa Build.VERSION.SDK_INT
itu hanya diperkenalkan di API Level 4, yang berarti Android 1.6 (Donat). Jadi ini tidak akan memengaruhi Anda, tetapi jika Anda ingin aplikasi Anda berjalan di Android 1.5 atau lebih lama maka Anda harus menggunakan yang sudah usang Build.VERSION.SDK
.
Saya tidak bisa mengomentari jawabannya, tetapi ada kesalahan besar dalam jawaban Kaushik: SDK_INT tidak sama dengan versi sistem tetapi sebenarnya mengacu pada Tingkat API.
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
//this code will be executed on devices running ICS or later
}
Nilai Build.VERSION_CODES.ICE_CREAM_SANDWICH
sama dengan 14. 14 adalah level API dari Ice Cream Sandwich, sedangkan versi sistem adalah 4.0. Jadi jika Anda menulis 4.0, kode Anda akan dieksekusi pada semua perangkat mulai dari Donut, karena 4 adalah tingkat API dari Donut ( Build.VERSION_CODES.DONUT
sama dengan 4).
if(Build.VERSION.SDK_INT >= 4.0){
//this code will be executed on devices running on DONUT (NOT ICS) or later
}
Contoh ini adalah alasan mengapa menggunakan 'angka ajaib' adalah kebiasaan buruk.
if(Build.VERSION.SDK_INT >= 15){
Sebagai contoh, sebuah fitur hanya berfungsi untuk api21 ke atas berikut ini kami memperbaiki bug di api21 ke bawah
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
Sadarilah bahwa Build.VERSION.SDK_INT tidak dapat diandalkan, ini disebutkan oleh @ Falcon165o dan baru-baru ini saya juga menabraknya.
Jadi untuk mendapatkan data String (berdasarkan daftar versi Android ) dari android yang saat ini diinstal, saya membuat kode seperti ini:
Jawa
//Current Android version data
public static String currentVersion(){
double release=Double.parseDouble(Build.VERSION.RELEASE.replaceAll("(\\d+[.]\\d+)(.*)","$1"));
String codeName="Unsupported";//below Jelly bean OR above Oreo
if(release>=4.1 && release<4.4)codeName="Jelly Bean";
else if(release<5)codeName="Kit Kat";
else if(release<6)codeName="Lollipop";
else if(release<7)codeName="Marshmallow";
else if(release<8)codeName="Nougat";
else if(release<9)codeName="Oreo";
return codeName+" v"+release+", API Level: "+Build.VERSION.SDK_INT;
}
Kotlin
fun currentVersion(): String {
val release = java.lang.Double.parseDouble(java.lang.String(Build.VERSION.RELEASE).replaceAll("(\\d+[.]\\d+)(.*)", "$1"))
var codeName = "Unsupported"//below Jelly bean OR above Oreo
if (release >= 4.1 && release < 4.4) codeName = "Jelly Bean"
else if (release < 5) codeName = "Kit Kat"
else if (release < 6) codeName = "Lollipop"
else if (release < 7) codeName = "Marshmallow"
else if (release < 8) codeName = "Nougat"
else if (release < 9) codeName = "Oreo"
return codeName + " v" + release + ", API Level: " + Build.VERSION.SDK_INT
}
Contoh output yang dihasilkannya:
Marshmallow v6.0, API Level: 23
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
gunakan kelas ini
import android.os.Build;
/**
* Created by MOMANI on 2016/04/14.
*/
public class AndroidVersionUtil {
public static int getApiVersion() {
return android.os.Build.VERSION.SDK_INT;
}
public static boolean isApiVersionGraterOrEqual(int thisVersion) {
return android.os.Build.VERSION.SDK_INT >= thisVersion;
}
}
Gunakan metode ini:
public static String getAndroidVersion() {
String versionName = "";
try {
versionName = String.valueOf(Build.VERSION.RELEASE);
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}
Karena Anda memiliki bash
perangkat Android, Anda dapat menggunakan fungsi bash ini:
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)
# Time "androidRelease" x10 to test it as an integer
case $androidRelease in
[0-9].[0-9]|[0-9].[0-9].|[0-9].[0-9].[0-9]) androidRelease=$(echo $androidRelease | cut -d. -f1-2 | tr -d .);;
[0-9].) androidRelease=$(echo $androidRelease | sed 's/\./0/');;
[0-9]) androidRelease+="0";;
esac
[ -n "$androidRelease" ] && [ $androidCodeName = REL ] && {
# Do not use "androidCodeName" when it equals to "REL" but infer it from "androidRelease"
androidCodeName=""
case $androidRelease in
10) androidCodeName+=NoCodename;;
11) androidCodeName+="Petit Four";;
15) androidCodeName+=Cupcake;;
20|21) androidCodeName+=Eclair;;
22) androidCodeName+=FroYo;;
23) androidCodeName+=Gingerbread;;
30|31|32) androidCodeName+=Honeycomb;;
40) androidCodeName+="Ice Cream Sandwich";;
41|42|43) androidCodeName+="Jelly Bean";;
44) androidCodeName+=KitKat;;
50|51) androidCodeName+=Lollipop;;
60) androidCodeName+=Marshmallow;;
70|71) androidCodeName+=Nougat;;
80|81) androidCodeName+=Oreo;;
90) androidCodeName+=Pie;;
100) androidCodeName+=ToBeReleased;;
*) androidCodeName=unknown;;
esac
}
echo $androidCodeName
}