Есть ли способ получить версию API, которая работает на телефоне в данный момент?
android
android-api-levels
Парт Мехта
источник
источник
Ответы:
Как описано в документации Android, уровень SDK (целое число), на котором работает телефон, доступен в:
android.os.Build.VERSION.SDK_INT
Класс, соответствующий этому int, находится в
android.os.Build.VERSION_CODES
классе.Пример кода:
Изменить : Этот SDK_INT доступен с Donut (android 1.6 / API4), поэтому убедитесь, что ваше приложение не является ретро-совместимым с Cupcake (android 1.5 / API3), когда вы его используете, иначе ваше приложение вылетит (спасибо программисту Брюсу за точность) ,
Соответствующая документация для Android здесь и здесь
источник
minSdkVersion
на4
(Android 1.6) и идти дальше.Очень просто:
Вывод:
источник
Это даст вам фактические номера вашей версии; ака 2.3.3 или 2.2. Проблема с использованием Build.VERSION.SDK_INT заключается в том, что если у вас есть рутированный телефон или пользовательский rom, у вас может быть нестандартная ОС (она же на моем Android работает под управлением 2.3.5), которая при использовании Build.VERSION.SDK_INT возвращает ноль. поэтому Build.VERSION.RELEASE будет работать независимо от того, используется ли стандартная версия Android или нет!
Чтобы использовать это, вы можете просто сделать это;
источник
int android.os.Build.VERSION.SDK_INT
иpublic static final int SDK_INT
иAdded in API level 4
как бы Int (не Integer) возвращениеNULL
?NULL
является состоянием для объекта, поэтому его Build или VERSION могут бытьnull
теоретически, но в этом случае не только,SDK_INT
ноRELEASE
также и приведет к NPE. SDK_INT может вызвать «Нет такого исключения метода» или что-то в этом роде, но не NULL или NPE. Если только пользовательское ПЗУ ломает документы и метод, объявленный какpublic static final Integer SDK_INT
. Я просто пытаюсь определить характер проблемы, чтобы обойти ее.null
ней не имеет смысла.Принимая во внимание все сказанное, вот код, который я использую для обнаружения, если устройство имеет Froyo или более новую ОС Android (2.2+):
Очевидно, что вы можете изменить это, если условие учитывает версии Android 1.0 и 1.5, если вам нужен универсальный контролер. Вы, вероятно, в конечном итоге что-то вроде этого:
Дайте мне знать, если код не работает для вас.
источник
попробуй это:
источник
android.os.Build.VERSION.SDK должен дать вам значение уровня API. Вы можете легко найти отображение уровня API в версию для Android в документации по Android. Я считаю, что 8 для 2.2, 7 для 2.1 и так далее.
источник
Понял. Это с использованием
getApplicationInfo()
методаContext
класса.источник
SDK.INT поддерживается для Android 1.6 и выше
SDK поддерживается для всех версий
Итак, я делаю:
Кредиты для: CommonsWare за этот ответ
источник
Я предпочитаю, чтобы номер версии был обработан более легко, чем я написал это:
источник
Работает счастливое кодирование
Примечание. Пожалуйста, убедитесь, что ваш пакет импорта правильный (импортируйте имя пакета вашего приложения, иначе оно не будет работать должным образом)
источник
Я улучшил код, который использовал
источник