Najnowsze wersje Androida często udostępniają świetne interfejsy API dla Twojej aplikacji, ale do czasu, aż więcej urządzeń zostanie zaktualizowanych, musisz nadal obsługiwać starsze wersje Androida. Z tej lekcji dowiesz się, jak korzystać z najnowszych interfejsów API, a jednocześnie nadal obsługiwać starsze wersje.
Użyj kreatora Nowy projekt w Android Studio, aby znaleźć rozkład aktywnych urządzeń z poszczególnymi wersjami Androida. Te dane są oparte na liczbie urządzeń, które odwiedzają Sklep Google Play. Zazwyczaj zalecamy obsługę około 90% aktywnych urządzeń, a jednocześnie kierowanie aplikacji na najnowszą wersję.
Wskazówka: aby zapewnić najlepsze funkcje i działanie w różnych wersjach Androida, używaj w aplikacji Biblioteki pomocy Androida, która umożliwia korzystanie z kilku najnowszych interfejsów API platformy w starszych wersjach.
Określanie minimalnego i docelowego poziomu interfejsu API
Plik AndroidManifest.xml zawiera szczegółowe informacje o aplikacji i określa, które wersje Androida są obsługiwane. W szczególności atrybuty minSdkVersion
i targetSdkVersion
elementu <uses-sdk>
określają najniższy poziom interfejsu API, z którym Twoja aplikacja jest zgodna, oraz najwyższy poziom interfejsu API, pod kątem którego została zaprojektowana i przetestowana.
Na przykład:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
Wraz z wprowadzaniem nowych wersji Androida niektóre style i zachowania mogą się zmieniać.
Aby umożliwić aplikacji korzystanie z tych zmian i zapewnić, że będzie pasować do stylu urządzenia każdego użytkownika, ustaw wartość targetSdkVersion
na najnowszą dostępną wersję Androida.
Pomocnicze wersje pakietu SDK nie są powiązane ze zmianami w działaniu, więc nie można ustawić parametru
targetSdkVersion
tak, aby odzwierciedlał pomocniczą wersję pakietu SDK. Jeśli chcesz wywołać interfejs API w wersji podrzędnej pakietu SDK nowszej niż minSdkVersion
, sprawdź wersję systemu w czasie działania.
Sprawdzanie wersji systemu w czasie działania
Android udostępnia unikalny kod dla każdej wersji platformy w klasie stałych Build
. Używaj tych kodów w aplikacji, aby tworzyć warunki, które zapewniają, że kod zależny od wyższych poziomów interfejsu API jest wykonywany tylko wtedy, gdy te interfejsy API są dostępne w systemie.
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
Możesz użyć Build.VERSION.SDK_INT_FULL, aby sprawdzić, czy występuje główna lub pomocnicza wersja pakietu SDK.
Kotlin
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Java
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) { // Use APIs introduced in a major or minor SDK release }
Uwaga: podczas analizowania zasobów XML Android ignoruje atrybuty XML, które nie są obsługiwane przez bieżące urządzenie. Dzięki temu możesz bezpiecznie używać atrybutów XML, które są obsługiwane tylko przez nowsze wersje, bez obaw, że starsze wersje przestaną działać, gdy napotkają ten kod. Jeśli na przykład ustawisz wartość
targetSdkVersion="11"
, Twoja aplikacja będzie domyślnie zawierać ActionBar
na urządzeniach z Androidem 3.0 lub nowszym. Aby dodać elementy menu do paska działań, musisz ustawić atrybut
android:showAsAction="ifRoom"
w pliku XML zasobu menu. Możesz to zrobić w pliku XML obejmującym różne wersje, ponieważ starsze wersje Androida po prostu ignorują atrybut showAsAction
(czyli nie potrzebujesz osobnej wersji w res/menu-v11/
).
Korzystanie ze stylów i motywów platformy
Android udostępnia motywy interfejsu, które nadają aplikacjom wygląd i sposób działania systemu operacyjnego. Te motywy można zastosować w aplikacji w pliku manifestu. Dzięki korzystaniu z tych wbudowanych stylów i motywów aplikacja będzie naturalnie dostosowywać się do najnowszego wyglądu Androida w każdej nowej wersji.
Aby aktywność wyglądała jak okno dialogowe:
<activity android:theme="@android:style/Theme.Dialog">
Aby aktywność miała przezroczyste tło:
<activity android:theme="@android:style/Theme.Translucent">
Aby zastosować własny motyw niestandardowy zdefiniowany w pliku /res/values/styles.xml
:
<activity android:theme="@style/CustomTheme">
Aby zastosować motyw do całej aplikacji (wszystkich działań), dodaj atrybut android:theme
do elementu <application>
:
<application android:theme="@style/CustomTheme">
Więcej informacji o tworzeniu i używaniu motywów znajdziesz w przewodniku Style i motywy.