Кто-нибудь знает, как я могу программно проверить версию системы (например, 1.0
, 2.2
и т.д.)?
Как проверить системную версию Android?
Ответ 1
Отметьте android.os.Build.VERSION
.
CODENAME
: текущее кодовое имя разработки или строка "REL", если это версия сборки.INCREMENTAL
: внутреннее значение, используемое базовым элементом управления источником для представления этой сборки.RELEASE
: строка, видимая для пользователя.
Ответ 2
Пример использования:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.GINGERBREAD) {
// only for gingerbread and newer versions
}
Ответ 3
Build.VERSION.RELEASE;
Это даст вам фактические номера вашей версии; a 2.3.3 или 2.2. Проблема с использованием Build.VERSION.SDK_INT заключается в том, что если у вас есть встроенный телефон или пользовательский ром, у вас не может быть ни одной стандартной ОС (например, мой Android не работает 2.3.5), и это вернет null при использовании Build.VERSION.SDK_INT поэтому Build.VERSION.RELEASE будет работать независимо от того, что!
Ответ 4
Build.Version - это место для этих данных. Вот фрагмент кода для его форматирования.
public String getAndroidVersion() {
String release = Build.VERSION.RELEASE;
int sdkVersion = Build.VERSION.SDK_INT;
return "Android SDK: " + sdkVersion + " (" + release +")";
}
Похоже на это "Android SDK: 19 (4.4.4)"
Ответ 5
Вы можете узнать версию Android, глядя на Build.VERSION
.
В документации рекомендуется проверить Build.VERSION.SDK_INT
на значения в Build.VERSION_CODES
.
Это прекрасно, если вы понимаете, что Build.VERSION.SDK_INT
был введен только в API Level 4, то есть Android 1.6 (Donut). Таким образом, это не повлияет на вас, но если вы хотите, чтобы ваше приложение запускалось на Android 1.5 или ранее, вам придется использовать устаревший Build.VERSION.SDK
.
Ответ 6
Я не могу комментировать ответы, но в Каушике есть большая ошибка: SDK_INT не совпадает с версией системы, но на самом деле относится к уровню API.
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH){
//this code will be executed on devices running ICS or later
}
Значение Build.VERSION_CODES.ICE_CREAM_SANDWICH
равно 14.
14 - уровень API Ice Cream Sandwich, а версия системы - 4,0. Поэтому, если вы напишете 4.0, ваш код будет выполнен на всех устройствах, начиная с Donut, потому что 4 - уровень API Donut (Build.VERSION_CODES.DONUT
равно 4).
if(Build.VERSION.SDK_INT >= 4.0){
//this code will be executed on devices running on DONUT (NOT ICS) or later
}
Этот пример является причиной того, что использование "магического числа" является плохой привычкой.
Ответ 7
Для проверки версии устройства, которая больше или равна Marshmallow, используйте этот код.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
}
для ckecking другие просто изменяют VERSION_CODES, например,
K для kitkat,
L для loolipop
N для Нуги и т.д.
Ответ 8
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.HONEYCOMB_MR2) {
//do anything you like.
}
Ответ 9
Например, функция работает только для api21 до следующего исправления ошибок в api21 down
if(Build.VERSION.SDK_INT >= 21) {
//only api 21 above
}else{
//only api 21 down
}
Ответ 10
Помните, что Build.VERSION.SDK_INT не является надежным, о чем упоминал @Falcon165o, и недавно я столкнулся с этим.
Итак, чтобы получить данные String (на основе списка версий Android) установленного в настоящий момент Android, я сделал такой код:
//Current Android version data
public static String currentVersion(){
double release=Double.parseDouble(Build.VERSION.RELEASE);
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;
}
Пример вывода, который он производит:
Marshmallow v6.0, уровень API: 23
Ответ 11
используйте этот класс
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;
}
}
Ответ 12
Использовать этот метод:
public static String getAndroidVersion() {
String versionName = "";
try {
versionName = String.valueOf(Build.VERSION.RELEASE);
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}