Tidak ada yang tahu bagaimana saya dapat periksa versi sistem (misalnya 1.0
, 2.2
, dll.) secara programatik?
Cek android.os.Membangun.VERSI
.
CODENAME
: saat ini perkembangan codename, atau string "REL" jika ini adalah rilis yang membangun.INKREMENTAL
: nilai internal yang digunakan oleh sumber yang mendasari kontrol untuk mewakili membangun ini.RELEASE
: Yang dilihat pengguna versi string.
Membangun.Versi adalah tempat di buka untuk data ini. Berikut adalah potongan kode untuk bagaimana format itu.
public String getAndroidVersion() {
String release = Build.VERSION.RELEASE;
int sdkVersion = Build.VERSION.SDK_INT;
return "Android SDK: " + sdkVersion + " (" + release +")";
}
Terlihat seperti ini "Android SDK: 19 (4.4.4)"
Build.VERSION.RELEASE;
Yang akan memberikan anda angka-angka yang sebenarnya dari versi; alias 2.3.3 atau 2.2. Masalah dengan menggunakan Membangun.VERSI.SDK_INT adalah jika anda memiliki telepon berakar atau custom rom, anda bisa memiliki tidak ada standar OS (alias android saya menjalankan 2.3.5) dan yang akan mengembalikan null jika menggunakan Membangun.VERSI.SDK_INT jadi Membangun.VERSI.RILIS akan bekerja tidak peduli apa!
Untuk memeriksa versi perangkat yang lebih besar dari atau sama dengan Marshmallow ,gunakan kode ini.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
}
untuk ckecking orang lain hanya mengubah VERSION_CODES seperti, K untuk kitkat, L untuk loolipop N untuk Nougat dan sebagainya...
Anda dapat mengetahui versi Android melihat Membangun.VERSI
.
Dokumentasi merekomendasikan anda memeriksa Membangun.VERSI.SDK_INT
terhadap nilai-nilai di Membangun.VERSION_CODES
.
Ini adalah baik-baik saja asalkan anda menyadari bahwa Membangun.VERSI.SDK_INT
hanya diperkenalkan pada API Level 4, yang mengatakan Android 1.6 (Donut). Jadi ini tidak't mempengaruhi anda, tetapi jika anda tidak ingin aplikasi anda berjalan pada Android 1.5 atau lebih awal maka anda akan memiliki untuk menggunakan usang Membangun.VERSI.SDK
sebaliknya.
Saya dapat't mengomentari jawaban, tapi ada kesalahan besar dalam Kaushik's jawaban: SDK_INT tidak sama seperti versi sistem tetapi sebenarnya mengacu pada API Level.
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
//this code will be executed on devices running ICS or later
}
Nilai Membangun.VERSION_CODES.ICE_CREAM_SANDWICH
sama dengan 14.
14 adalah API tingkat Ice Cream Sandwich, sedangkan sistem versi 4.0. Jadi jika anda menulis 4.0, kode anda akan dijalankan pada semua perangkat mulai dari Donat, karena 4 adalah API tingkat Donat (Membangun.VERSION_CODES.DONAT
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.
Diketahui bahwa Membangun.VERSI.SDK_INT isn't dapat diandalkan,'s yang disebutkan oleh @Falcon165o dan baru-baru ini aku berlari ke yang satu itu juga.
Sehingga untuk mendapatkan data String (berdasarkan versi Android klik disini) dari saat ini diinstal android, 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 dihasilkan:
Marshmallow v6.0, API Level: 23
menggunakan 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;
}
}