Eu ignoro totalmente qualquer versão anterior à Eclair (7), Android 2.1 e muito em breve paramos o suporte para a 2.1 também. Mas você pode usar o SDK em vez do SDK_INT.
ATom 3/12/12
12
O SDK foi exibido no nível 4 da API. Use o SDK_INT.
erdomester
Tenho uma pergunta: se estiver sendo executado em um sistema mais antigo que GINGERBREAD, não será possível obter o android.os.Build.VERSION_CODES.GINGERBREAD, o aplicativo falhará?
HongchaoZhang
Não, porque GINGERBREAD será substituído apenas pelo número durante a compilação do java. Só é necessário usar uma versão maior de compilação do Android.
Atom
97
Build.Version é o local para esses dados. Aqui está um trecho de código de como formatá-lo.
Isso fornecerá os números reais da sua versão; tcp 2.3.3 ou 2.2. O problema com o uso do Build.VERSION.SDK_INT é que, se você tiver um telefone raiz ou uma ROM personalizada, poderá ter um sistema operacional não padrão (também conhecido como meu android está executando o 2.3.5) e que retornará um valor nulo ao usar o Build.VERSION.SDK_INT então Build.VERSION.RELEASE funcionará, não importa o quê!
No SDK: "A cadeia de caracteres da versão visível ao usuário. Por exemplo," 1.0 "ou" 3.4b5 "." .... "3.4b5" como posso determinar qual é o número da versão?
DAVs
Toda a resposta 2.3.3 é o número da versão ou 2.2 ou 2.3.5 (ROM personalizada no meu caso). Esse é o número da versão do sistema operacional como um todo.
precisa saber é o seguinte
Ele retorna a mesma coisa Menu >> Configurações >> Sobre o telefone. Ele deve ser rotulado como Versão do firmware ou algo assim.
precisa saber é o seguinte
58
Como diabos um int pode retornar um nulo? SDK_INT é um int primitivo.
Zsolt Safrany
57
Para verificar a versão do dispositivo que é maior ou igual a Marshmallow, use este código.
Isso é bom desde que você saiba que Build.VERSION.SDK_INTfoi introduzido apenas na API Nível 4, ou seja, Android 1.6 (Donut). Portanto, isso não afetará você, mas se você deseja que o aplicativo seja executado no Android 1.5 ou anterior, será necessário usar o obsoleto Build.VERSION.SDK.
Não posso comentar as respostas, mas há um grande erro na resposta de Kaushik: SDK_INT não é o mesmo que a versão do sistema, mas na verdade se refere ao nível da API.
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.ICE_CREAM_SANDWICH){//this code will be executed on devices running ICS or later}
O valor Build.VERSION_CODES.ICE_CREAM_SANDWICHé igual a 14. 14 é o nível da API do Ice Cream Sandwich, enquanto a versão do sistema é 4.0. Portanto, se você escrever 4.0, seu código será executado em todos os dispositivos a partir do Donut, porque 4 é o nível da API do Donut ( Build.VERSION_CODES.DONUTigual a 4).
if(Build.VERSION.SDK_INT >=4.0){//this code will be executed on devices running on DONUT (NOT ICS) or later}
Este exemplo é um motivo pelo qual usar 'número mágico' é um mau hábito.
Dado que você tem bashno seu dispositivo Android, você pode usar esta função bash:
function androidCodeName {
androidRelease=$(getprop ro.build.version.release)
androidCodeName=$(getprop ro.build.version.codename)# Time "androidRelease" x10 to test it as an integercase $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 in10) 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
}
Respostas:
Verifique
android.os.Build.VERSION
.fonte
Exemplo de como usá-lo:
fonte
Build.Version é o local para esses dados. Aqui está um trecho de código de como formatá-lo.
É assim "Android SDK: 19 (4.4.4)"
fonte
Isso fornecerá os números reais da sua versão; tcp 2.3.3 ou 2.2. O problema com o uso do Build.VERSION.SDK_INT é que, se você tiver um telefone raiz ou uma ROM personalizada, poderá ter um sistema operacional não padrão (também conhecido como meu android está executando o 2.3.5) e que retornará um valor nulo ao usar o Build.VERSION.SDK_INT então Build.VERSION.RELEASE funcionará, não importa o quê!
fonte
Para verificar a versão do dispositivo que é maior ou igual a Marshmallow, use este código.
para verificar os outros, basta alterar o VERSION_CODES como,
K para kitkat,
L para loolipop N para Nougat e assim por diante ...
fonte
Você pode descobrir a versão do Android olhando
Build.VERSION
.A documentação recomenda que você verifique
Build.VERSION.SDK_INT
os valores emBuild.VERSION_CODES
.Isso é bom desde que você saiba que
Build.VERSION.SDK_INT
foi introduzido apenas na API Nível 4, ou seja, Android 1.6 (Donut). Portanto, isso não afetará você, mas se você deseja que o aplicativo seja executado no Android 1.5 ou anterior, será necessário usar o obsoletoBuild.VERSION.SDK
.fonte
Não posso comentar as respostas, mas há um grande erro na resposta de Kaushik: SDK_INT não é o mesmo que a versão do sistema, mas na verdade se refere ao nível da API.
O valor
Build.VERSION_CODES.ICE_CREAM_SANDWICH
é igual a 14. 14 é o nível da API do Ice Cream Sandwich, enquanto a versão do sistema é 4.0. Portanto, se você escrever 4.0, seu código será executado em todos os dispositivos a partir do Donut, porque 4 é o nível da API do Donut (Build.VERSION_CODES.DONUT
igual a 4).Este exemplo é um motivo pelo qual usar 'número mágico' é um mau hábito.
fonte
if(Build.VERSION.SDK_INT >= 15){
Por exemplo, um recurso funciona apenas para a api21, da seguinte forma, corrigimos bugs na api21 para baixo
fonte
Esteja ciente de que o Build.VERSION.SDK_INT não é confiável, é mencionado pelo @ Falcon165o e recentemente encontrei esse também.
Então, para obter os dados da String (com base na lista de versões do Android ) do Android atualmente instalado, criei um código como este:
Java
Kotlin
Exemplo de uma saída que ela produz:
fonte
fonte
use esta classe
fonte
Use este método:
fonte
Dado que você tem
bash
no seu dispositivo Android, você pode usar esta função bash:fonte