Existe alguma maneira de obter a versão da API que o telefone está executando no momento?
android
android-api-levels
Parth Mehta
fonte
fonte
Respostas:
Conforme descrito na documentação do Android, o nível do SDK (número inteiro) que o telefone está executando está disponível em:
android.os.Build.VERSION.SDK_INT
A classe correspondente a este int está na
android.os.Build.VERSION_CODES
classeExemplo de código:
Edit : Este SDK_INT está disponível desde o Donut (android 1.6 / API4), para garantir que seu aplicativo não seja retro-compatível com o Cupcake (android 1.5 / API3) quando você o usar ou o aplicativo falhará (obrigado ao programador Bruce pela precisão) .
A documentação android correspondente está aqui e aqui
fonte
minSdkVersion
para4
(Android 1.6) e continuar.Muito fácil:
Resultado:
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á independentemente da versão padrão do Android ou não!
Para usá-lo, você poderia fazer isso;
fonte
int android.os.Build.VERSION.SDK_INT
epublic static final int SDK_INT
eAdded in API level 4
como poderia int (não Integer) retornoNULL
?NULL
é um estado para um objeto, portanto sua Build ou VERSION pode sernull
teoricamente, mas nesse caso, não apenasSDK_INT
masRELEASE
também causará um NPE. O SDK_INT provavelmente poderia causar "Nenhuma exceção desse método" ou algo parecido, mas não nulo ou NPE. Se apenas a ROM personalizada quebrar os documentos e o método declarado comopublic static final Integer SDK_INT
. Estou apenas tentando determinar a natureza de um problema para solucionar o problema.null
não faz sentido.Levando em conta tudo dito, eis o código que eu uso para detectar se o dispositivo possui o Froyo ou o sistema operacional Android mais recente (2.2+):
Obviamente, você pode modificar essa condição se levar em conta as versões 1.0 e 1.5 do Android, caso precise de um verificador genérico. Você provavelmente terminará com algo assim:
Deixe-me saber se o código não está funcionando para você.
fonte
tente isto:
fonte
android.os.Build.VERSION.SDK deve fornecer o valor do nível da API. Você pode encontrar facilmente o mapeamento do nível da API para a versão do Android na documentação do Android. Eu acredito que 8 é para 2.2, 7 para 2.1, e assim por diante.
fonte
Entendi. Está usando o
getApplicationInfo()
método daContext
classe.fonte
SDK.INT é suportado para Android 1.6 e superior
SDK é suportado para todas as versões
Então eu faço:
Créditos para: CommonsWare sobre esta resposta
fonte
Eu prefiro ter a versão como número a ser manipulada de maneira mais fácil do que escrevi:
fonte
Sua codificação feliz de trabalho
Nota Verifique se o seu pacote de importação está correto (importe o nome do pacote do aplicativo, caso contrário, não funcionará corretamente)
fonte
Melhorei o código que usei
fonte