Zmiany w działaniu: aplikacje kierowane na Androida 13 lub nowszego

Podobnie jak w poprzednich wersjach, Android 13 zawiera zmiany w działaniu, które mogą mieć wpływ . Poniższe zmiany w działaniu dotyczą tylko aplikacji, na które są kierowane Androida w wersji 13 lub nowszej. Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, w razie potrzeby zmodyfikować aplikację, aby obsługiwała te zachowania.

Zapoznaj się też z listą zmian w działaniu, które mają wpływ na wszystkie aplikacje na Androidzie 13.

Prywatność

Uprawnienia dotyczące powiadomień wpływają na wygląd usługi na pierwszym planie

Jeśli użytkownik zaprzecza zgodę na wyświetlanie powiadomień, nie widzą powiadomień związanych z usługami na pierwszym planie panelu powiadomień. Użytkownicy nadal będą jednak widzieć powiadomienia związane z usługami na pierwszym planie w Menedżer zadań, niezależnie od tego, czy użytkownik wyraził zgodę na wyświetlanie powiadomień.

Nowe uprawnienia w czasie działania dla urządzeń Wi-Fi w pobliżu

W poprzednich wersjach Androida użytkownik musi przyznać aplikacji: ACCESS_FINE_LOCATION i dostęp do niej w kilku typowych przypadkach użycia Wi-Fi.

Ponieważ użytkownikom trudno jest powiązać dostęp do lokalizacji z Wi-Fi funkcji, Android 13 (poziom interfejsu API 33) wprowadza uprawnienia czasu działania NEARBY_DEVICES grupa uprawnień dla aplikacji, które zarządzają połączeniami urządzenia z dostępem w pobliżu punktów przez Wi-Fi. To uprawnienie, NEARBY_WIFI_DEVICES obsługuje takie przypadki użycia Wi-Fi:

  • Znajduj urządzenia w pobliżu, takie jak drukarki czy urządzenia przesyłające multimedia, i łącz się z nimi. Dzięki temu aplikacja może wykonywać takie zadania:
    • Odbieraj informacje AP spoza zakresu, na przykład przez BLE.
    • Wykrywanie urządzeń i łączenie się z nimi przez Wi-Fi Aware oraz łączenie się za pomocą lokalnego hotspotu.
    • Wykrywanie urządzeń i łączenie się z nimi przez Wi-Fi Direct.
  • Zainicjuj połączenie ze znanym identyfikatorem SSID, takim jak samochód lub inteligentne urządzenie domowe.
  • Uruchom lokalny hotspot.
  • Zasięg z urządzeniami Wi-Fi Aware w pobliżu.

O ile aplikacja nie pobiera informacji o lokalizacji fizycznej z Wi-Fi API należy wysłać żądanie NEARBY_WIFI_DEVICES zamiast ACCESS_FINE_LOCATION, gdy są kierowane na Androida 13 lub nowszego i używają interfejsów API Wi-Fi; Gdy zadeklarujesz NEARBY_WIFI_DEVICES, stanowczo oznacz, że aplikacja nigdy pobiera informacje o lokalizacji fizycznej z interfejsów API Wi-Fi. W tym celu ustaw parametr android:usesPermissionFlags do neverForLocation. Ten proces podobnie jak w Androidzie 12 (poziom interfejsu API 31) i nowszym, deklarować, że informacje z urządzenia Bluetooth nigdy nie są używane do lokalizacji.

Dowiedz się więcej o tym, poprosić o dostęp do urządzeń Wi-Fi w pobliżu

Szczegółowe uprawnienia dotyczące multimediów

Dwa przyciski w tym oknie, od góry do dołu, to Zezwalaj i Nie.
  zezwalaj
Rysunek 1. Okno uprawnień systemowych, które użytkownik widzi, gdy prosisz o uprawnienie READ_MEDIA_AUDIO.

Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego i wymaga dostęp do plików multimedialnych zainstalowanych przez inne aplikacje utworzony, musisz poproś o co najmniej jedno z tych szczegółowych uprawnień dotyczących multimediów zamiast READ_EXTERNAL_STORAGE. uprawnienie:

Typ multimediów Uprawnienia, o które możesz poprosić
Obrazy i zdjęcia READ_MEDIA_IMAGES
Filmy READ_MEDIA_VIDEO
Pliki audio READ_MEDIA_AUDIO

Zanim uzyskasz dostęp do plików multimedialnych w innej aplikacji, sprawdź, czy użytkownik ją przyznał odpowiednie uprawnienia dotyczące szczegółowych multimediów w aplikacji.

Rysunek 1 przedstawia aplikację, która prosi o uprawnienie READ_MEDIA_AUDIO.

Jeśli poprosisz o uprawnienie READ_MEDIA_IMAGES oraz READ_MEDIA_VIDEO uprawnienie jednocześnie, tylko 1 uprawnienie systemowe pojawi się okno dialogowe.

Jeśli Twojej aplikacji przyznano wcześniej READ_EXTERNAL_STORAGE wszystkie wymagane uprawnienia READ_MEDIA_* automatycznie podczas uaktualniania. Aby to sprawdzić, możesz użyć tego polecenia ADB ulepszone uprawnienia:

adb shell cmd appops get --uid PACKAGE_NAME

Korzystanie z czujników na ciele w tle wymaga nowych uprawnień

Android 13 wprowadza pojęcie „podczas używania” dostęp dla czujniki ciała, takie jak tętno, temperatura i procent tlenu we krwi. Ten jest bardzo podobny do modelu wprowadzonego przez system dla lokalizacji w Androidzie 10 (poziom interfejsu API 29).

Jeśli Twoja aplikacja jest kierowana na Androida 13 i wymaga dostępu do czujnika na ciele podczas działania w tle, musisz zadeklarować nowy BODY_SENSORS_BACKGROUND oprócz istniejących uprawnień BODY_SENSORS uprawnienia.

Wydajność i bateria

Wykorzystanie zasobów baterii

Jeśli użytkownik umieści aplikację w „z ograniczeniami” stan dla wykorzystanie baterii w tle jeśli aplikacja jest kierowana na Androida 13, system nie udostępnia BOOT_COMPLETED lub LOCKED_BOOT_COMPLETED do aplikacja została uruchomiona z innych powodów.

Interfejs użytkownika

Opcje sterowania multimediami pochodzą z: PlaybackState

W przypadku aplikacji kierowanych na Androida 13 (poziom interfejsu API 33) i nowsze wersje system opcje sterowania multimediami z: PlaybackState działania. Ten pozwala systemowi na wyświetlanie bogatszego zestawu ustawień, które technicznie między telefonami i tabletami, a także elementy sterujące są renderowane na innych platformach Androida, takich jak Android Auto Android TV.

Ilustracja 2 pokazuje, jak to wygląda na telefonie i tablecie. .

kontrolować sposób wyświetlania reklam na telefonach i tabletach.
            za pomocą przykładowej ścieżki audio, na której widać, jak mogą wyglądać przyciski
Rys. 2. Opcje sterowania multimediami na telefonach i tabletach

Przed Androidem 13 system wyświetlał do 5 działań z MediaStyle powiadomienia w kolejności, w jakiej zostały dodane. W trybie kompaktowym, na przykład w zwiniętych szybkich ustawieniach, do 3 działania określone za pomocą parametru setShowActionsInCompactView() które zostały wyświetlone.

Począwszy od Androida 13 system wyświetla do 5 przycisków polecenia w zależności od tego, w PlaybackState, jak opisano w tej tabeli. W trybie kompaktowym tylko pierwsze trzy przedziały czasu na działania. W przypadku aplikacji, które nie są kierowane na Androida 13 lub które nie zawierają parametru PlaybackState, system wyświetli ustawienia na podstawie: listę Action dodaną do powiadomienia MediaStyle zgodnie z opisem w poprzedniego akapitu.

Boks Działanie Kryteria
1 Odtwórz Bieżący stan elementu PlaybackState to:
    .
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
Wskaźnik postępu ładowania Bieżący stan elementu PlaybackState to:
    .
  • STATE_CONNECTING
  • STATE_BUFFERING
Wstrzymaj Bieżący stan elementu PlaybackState nie stanowi żadnej z powyższych opcji.
2 Wstecz PlaybackState działań, w tym ACTION_SKIP_TO_PREVIOUS.
Możliwość Działania PlaybackState nie obejmują działań niestandardowych ACTION_SKIP_TO_PREVIOUS i PlaybackState, które obejmują działanie niestandardowe, które nie zostały jeszcze wykonane.
Puste Rozszerzenia PlaybackState zawierają wartość logiczną true dla klucza SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV.
3 Dalej PlaybackState działań, w tym ACTION_SKIP_TO_NEXT.
Możliwość Działania PlaybackState nie obejmują działań niestandardowych ACTION_SKIP_TO_NEXT i PlaybackState, które obejmują działanie niestandardowe, które nie zostały jeszcze wykonane.
Puste Rozszerzenia PlaybackState zawierają wartość logiczną true dla klucza SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT.
4 Możliwość PlaybackState działania niestandardowe obejmują takie, które nie zostały jeszcze zastosowane.
5 Możliwość PlaybackState działania niestandardowe obejmują takie, które nie zostały jeszcze zastosowane.

Działania niestandardowe są umieszczane w kolejności, w jakiej zostały dodane do PlaybackState

Motyw kolorystyczny aplikacji jest stosowany automatycznie do treści WebView

W przypadku aplikacji kierowanych na Androida 13 (poziom interfejsu API 33) lub nowszego parametr setForceDark() jest przestarzała, co skutkuje wywołaniem tej metody bez działania.

Zamiast tego WebView teraz zawsze ustawia zapytanie o media prefers-color-scheme zgodnie z atrybutem motywu aplikacji, isLightTheme W innym słowa, jeśli isLightTheme ma wartość true lub nie określono, prefers-color-scheme to light; w przeciwnym razie ma wartość dark. Takie działanie oznacza, że treści internetowe jasny lub ciemny styl jest stosowany automatycznie, aby pasował do motywu aplikacji, jeśli treści, które ją obsługują.

W przypadku większości aplikacji nowy sposób działania powinien obejmować odpowiednie style aplikacji. automatycznie. Warto jednak przetestować aplikację i sprawdzić, czy nie mógł ręcznie sterować ustawieniami trybu ciemnego.

Jeśli nadal chcesz dostosować działanie motywu kolorystycznego aplikacji, skorzystaj z setAlgorithmicDarkeningAllowed() . Aby zapewnić zgodność wsteczną z poprzednimi wersjami Androida, zalecamy użycie odpowiednika setAlgorithmicDarkeningAllowed() w AndroidzieX.

Zapoznaj się z dokumentacją danej metody, aby dowiedzieć się, jakie działania w zależności od targetSdkVersion i motyw ustawieniach.

Łączność

Wycofane BluetoothAdapter#enable() i BluetoothAdapter#disable()

W przypadku aplikacji kierowanych na Androida 13 (poziom interfejsu API 33) lub nowszego BluetoothAdapter#enable() i Metody BluetoothAdapter#disable() zostały wycofane i zawsze zwróć false.

Tych zmian nie dotyczą te typy aplikacji:

  • Aplikacje właściciela urządzenia
  • Aplikacje właściciela profilu
  • Aplikacje systemowe

Usługi Google Play

Wymagana zgoda na dostęp do identyfikatora wyświetlania reklam

Aplikacje korzystające z reklam w Usługach Google Play Identyfikator oraz są kierowane na Androida 13 (poziom API 33) i nowsze zadeklarować normalne uprawnienia AD_ID w manifestu w ten sposób:

<manifest ...>
    <!-- Required only if your app targets Android 13 or higher. -->
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

    <application ...>
        ...
    </application>
</manifest>

Jeśli aplikacja nie deklaruje tych uprawnień w ramach kierowania na Androida 13 lub identyfikator wyświetlania reklam jest automatycznie usuwany i zastępowany ciągiem znaków. zer.

Jeśli Twoja aplikacja używa pakietów SDK, które zadeklarują uprawnienia AD_ID w bibliotece pliku manifestu, uprawnienia zostaną scalone z plikiem manifestu aplikacji przez wartość domyślną. W takim przypadku nie musisz deklarować uprawnień w sekcji .

Więcej informacji znajdziesz w artykule Reklamy ID w w Centrum pomocy Konsoli Play.

Zaktualizowano ograniczenia spoza pakietu SDK

Android 13 zawiera zaktualizowane listy ograniczonych list aplikacji spoza pakietu SDK oparte na współpracy z deweloperami aplikacji na Androida oraz do testów wewnętrznych. Gdy tylko jest to możliwe, dbamy o to, by alternatywne rozwiązania były dostępne publicznie, zanim wprowadzimy ograniczenia w interfejsach innych niż SDK.

Jeśli Twoja aplikacja nie jest kierowana na Androida 13, niektóre z tych zmian mogą nie być od razu widoczne. Mimo że obecnie możesz korzystać z wybranych interfejsy inne niż SDK (w zależności od docelowego interfejsu API aplikacji, ), Korzystanie z dowolnej metody lub pola niezwiązanego z pakietem SDK zawsze wiąże się z dużym ryzykiem naruszenia .

Jeśli nie wiesz, czy Twoja aplikacja korzysta z interfejsów innych niż SDK, możesz przetestować aby się dowiedzieć. Jeśli Twoja aplikacja korzysta z interfejsów innych niż SDK, zacznij planować migracji do alternatywnych pakietów SDK. Rozumiemy jednak, że niektóre aplikacje z prawidłowymi zastosowaniami interfejsów innych niż SDK. Jeśli nie możesz znaleźć innej do interfejsu innego niż SDK w przypadku danej funkcji, musisz poprosić o utworzenie nowego publicznego interfejsu API.

Więcej informacji o zmianach w tej wersji Androida znajdziesz w sekcji Aktualizacje ograniczeń związanych z interfejsem innym niż SDK w Androidzie 13. Więcej informacji o interfejsach innych niż SDK znajdziesz w artykule Ograniczenia dotyczące interfejsów innych niż SDK .