Czy jest jakiś sposób, aby uzyskać wersję interfejsu API, na której telefon aktualnie działa?
android
android-api-levels
Parth Mehta
źródło
źródło
Odpowiedzi:
Zgodnie z opisem w dokumentacji systemu Android poziom SDK (liczba całkowita), w którym działa telefon, jest dostępny w:
android.os.Build.VERSION.SDK_INT
Klasa odpowiadająca temu int jest w
android.os.Build.VERSION_CODES
klasie.Przykład kodu:
Edycja : Ten SDK_INT jest dostępny od wersji Donut (Android 1.6 / API4), więc upewnij się, że twoja aplikacja nie jest kompatybilna z Cupcake (Android 1.5 / API3), gdy go używasz, bo inaczej aplikacja się zawiesi (dzięki Programmer Bruce za precyzję) .
Odpowiednia dokumentacja Androida znajduje się tutaj i tutaj
źródło
minSdkVersion
na4
(Android 1.6) i kontynuuj.Bardzo łatwe:
Wynik:
źródło
To da ci rzeczywiste numery twojej wersji; alias 2.3.3 lub 2.2. Problem z używaniem Build.VERSION.SDK_INT polega na tym, że jeśli masz zrootowany telefon lub niestandardowy ROM, możesz mieć niestandardowy system operacyjny (inaczej mój Android działa 2.3.5), który zwróci wartość null podczas korzystania z Build.VERSION.SDK_INT więc Build.VERSION.RELEASE będzie działać bez względu na standardową wersję Androida lub nie!
Aby go użyć, możesz po prostu to zrobić;
źródło
int android.os.Build.VERSION.SDK_INT
ipublic static final int SDK_INT
iAdded in API level 4
jak można int (nie Integer) powrótNULL
?NULL
jest stanem obiektu, więc jego Kompilacja lub WERSJA mogłaby byćnull
teoretycznie, ale w takim przypadku nie tylko,SDK_INT
aleRELEASE
również spowoduje NPE. SDK_INT prawdopodobnie może powodować „Brak takiego wyjątku metody” lub coś w tym rodzaju, ale nie zerowy lub NPE. Jeśli tylko niestandardowa pamięć ROM zepsuje dokumenty, a metoda zadeklarowana jakopublic static final Integer SDK_INT
. Próbuję tylko ustalić naturę problemu, aby dokonać obejścia.null
nie ma sensu.Biorąc pod uwagę wszystkie powiedziane, oto kod, którego używam do wykrywania, czy urządzenie ma Froyo lub nowszy system operacyjny Android (2.2+):
Oczywiście możesz to zmienić, jeśli uwzględnisz wersje Androida 1.0 i 1.5, jeśli potrzebujesz ogólnego kontrolera. Prawdopodobnie skończysz z czymś takim:
Daj mi znać, jeśli kod nie działa dla Ciebie.
źródło
Spróbuj tego:
źródło
android.os.Build.VERSION.SDK powinien dać ci wartość poziomu API. Możesz łatwo znaleźć mapowanie z poziomu interfejsu API na wersję Androida w dokumentacji Androida. Uważam, że 8 to 2.2, 7 to 2.1 i tak dalej.
źródło
Rozumiem. Wykorzystuje
getApplicationInfo()
metodęContext
klasy.źródło
SDK.INT jest obsługiwany dla Androida 1.6 i nowszych
SDK jest obsługiwany dla wszystkich wersji
Ja również:
Kredyty dla: Commons Zastanów się nad tą odpowiedzią
źródło
wolę mieć wersję jako numer, aby łatwiej ją sprzedawać, niż napisałem:
źródło
Jego działanie Happy Coding
Uwaga Upewnij się, że pakiet importu jest poprawny (pakiet importu nazwa pakietu aplikacji, w przeciwnym razie nie będzie działał poprawnie)
źródło
Poprawiłem używany kod
źródło