Zmiany platformy zgodności (Android 11)

Na tej stronie opisujemy każdą zmianę działania wpływającą na aplikację, która została dodana do platformy zgodności w Androidzie 11 (poziom interfejsu API 30). Użyj tej listy w połączeniu z opcjami programisty i poleceniami ADB, aby przetestować i debugować aplikację na Androida 11.

DODAJ_TREŚCI_OBSERWER_FLAGS

Zmień identyfikator: 150939131

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 pojawiło się nowe publiczne przeciążenie interfejsów API onChange(boolean, Uri, int), które zawiera argument będący liczbą całkowitą flags.

Ta nowa metoda to publiczna alternatywa dla pakietu SDK na potrzeby aplikacji, które korzystają z metody przeciążonej onChange() innej niż SDK, która zawiera argument będący liczbą całkowitą userId.

ADMIN_APP_PASSWORD_COMPLExitY

Zmień identyfikator: 123562444

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji administracyjnych kierowanych na Androida 11, za każdym razem, gdy aplikacja ustawia wymóg dotyczący hasła, który jest nieistotny dla obecnie przypisanej jakości hasła, pojawia się błąd. Gdy na przykład jakość hasła jest ustawiona na DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, aplikacja nie może ustawić minimalnej długości hasła. W takim przypadku, zanim spróbujesz ustawić minimalną długość hasła, aplikacja powinna najpierw wywołać metodę setPasswordQuality(), a dopiero potem metodę setPasswordMinimumLength().

Oprócz tego, gdy aplikacja administratora kierowana na Androida 11 obniży jakość haseł, wszystkie obowiązujące wymagania dotyczące haseł, które nie będą już obowiązywać, zostaną przywrócone do wartości domyślnych.

APP_DATA_DIRECTORY_ISOLATION

Zmień identyfikator: 143937733

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aplikacje kierowane na Androida 11 nie mają już dostępu do plików w prywatnych katalogach danych żadnej aplikacji, niezależnie od jej docelowej wersji pakietu SDK.

Więcej informacji znajdziesz w artykule o dostępie do katalogów prywatnych.

APN_READING_PERMISSION_CHANGE_ID

Zmień identyfikator: 124107808

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 dostęp do bazy danych APN wymaga teraz uprawnienia Manifest.permission.WRITE_APN_SETTINGS.

Więcej informacji o tej zmianie znajdziesz w artykule Ograniczony dostęp z możliwością odczytu do bazy danych APN.

BACKGROUND_RATIONALE_CHANGE_ID

Zmień identyfikator: 147316723

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Teraz za każdym razem, gdy aplikacja prosi o dostęp do lokalizacji urządzenia w tle, musi być ona uzasadniona.

Więcej informacji o tej zmianie znajdziesz w przewodniku na temat uzyskiwania dostępu do lokalizacji w tle na Androidzie 11, w którym omówione są zmiany w ochronie prywatności związane z lokalizacją w Androidzie 11.

CALLBACK_ON_CLEAR_CHANGE

Zmień identyfikator: 119147584

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Po wywołaniu metody Editor.clear wykonywane jest teraz wywołanie zwrotne do OnSharedPreferenceChangeListener.onSharedPreferenceChanged z kluczem null.

Więcej informacji o tej zmianie znajdziesz w artykule Zmiany wywołań zwrotnych dla OnSharedPreferenceChangeListener.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

Zmień identyfikator: 130595455

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Kody błędów zostały rozwinięte w przypadku updateAvailableNetworks(List, Executor, Consumer) i setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer).

CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE

Zmień identyfikator: 148180766

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

To subtelna zmiana sposobu działania na startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). Przed tą zmianą system wywołał przełączenie operacji. Po zmianie system wywołuje żądania rzeczywiście żądanej operacji lub wszystkie przełączone operacje, jeśli nie określono żadnej.

IDENTYFIKATOR_ZMIANY_KAMERA_MICROPHONE'A_CAPABILITY_CHANGE_ID

Zmień identyfikator: 136219221

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 usługi działające na pierwszym planie otrzymują funkcje kamery i mikrofonu tylko w trakcie użytkowania, gdy obiekt R.attr.foregroundServiceType jest skonfigurowany odpowiednio jako ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA i ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE w pliku manifestu. We wcześniejszych wersjach Androida usługi działające na pierwszym planie automatycznie korzystały z możliwości kamery i mikrofonu.

Więcej informacji o tej zmianie znajdziesz w artykule Typy usług działających na pierwszym planie w Androidzie 11.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

Zmień identyfikator: 128611929

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aplikacje nie będą już mogły publikować niestandardowych powiadomień w tle. Aplikacje mogą jednak publikować tosty za pomocą metody Toast.makeText(Context, CharSequence, int) i jej wersji w tle.

Więcej informacji o tej zmianie znajdziesz w sekcji Niestandardowe widoki powiadomień są blokowane.

CHANGE_RESTRICT_SAW_INTENT

Identyfikator zmiany: 135920175

Stan domyślny: tej zmiany nie można przełączyć. Jest logowana tylko przez platformę zgodności.

Intencje korzystające z działania android.settings.MANAGE_APP_OVERLAY_PERMISSION i schematu URI danych package nie kierują już użytkownika do ekranu danej aplikacji, gdzie może zarządzać powiązanymi uprawnieniami. Zamiast tego użytkownik trafia na ekran, na którym może zarządzać wszystkimi aplikacjami, które zażądały tego uprawnienia.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

Zmień identyfikator: 147798919

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Powiadomienia tekstowe są teraz renderowane przez SystemUI, a nie w aplikacji. Zapobiega to obchodzeniu przez aplikacje ograniczeń dotyczących publikowania niestandardowych powiadomień w tle.

DEFAULT_SCOPED_STORAGE

Zmień identyfikator: 149924527

Stan domyślny: włączone w przypadku wszystkich aplikacji.

Wszystkie aplikacje kierowane na Androida 11 domyślnie korzystają teraz z ograniczonego miejsca na dane i nie można już zrezygnować z tego miejsca.

Możesz jednak testować aplikację bez zakresu pamięci niezależnie od docelowej wersji pakietu SDK i wartości flag pliku manifestu, wyłączając tę zmianę.

Więcej informacji o zmianach dotyczących miejsca na dane w zakresie na Androidzie 11 znajdziesz w sekcji Ograniczone miejsce na dane na stronie, w której znajdziesz informacje o zmianach dotyczących miejsca na dane na Androidzie w Androidzie 11.

EMPTY_INTENT_ACTION_CATEGORY

Zmień identyfikator: 151163173

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 system zgłasza teraz błąd, jeśli action lub category filtra intencji jest pustym ciągiem znaków. Błąd na platformie przed Androidem 11 pozwolił na przejście tej sprawy bez generowania błędu. Nie obejmuje to przypadków, gdy atrybut jest pusty lub ma wartość zerową, ponieważ zawsze był to błąd.

FILTR APLIKACJI_ZAPYTANIA

Zmień identyfikator: 135549675

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aplikacje muszą teraz zadeklarować pakiety i intencje, których zamierzają używać, zanim będą mogły uzyskać informacje o innych aplikacjach na urządzeniu. Takie deklaracje należy składać za pomocą tagu <queries> w pliku manifestu aplikacji.

Więcej informacji o wysyłaniu zapytań do innych zainstalowanych aplikacji i korzystaniu z nich na Androidzie 11 znajdziesz na stronie prywatności dotyczącej widoczności pakietów.

FORCE_ENABLE_SCOPED_STORAGE

Identyfikator zmiany: Wartość: 132649864

Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Wszystkie aplikacje kierowane na Androida 11 domyślnie korzystają teraz z ograniczonego miejsca na dane i nie można już zrezygnować z tego miejsca.

Jeśli jednak Twoja aplikacja nadal jest kierowana na Androida 10 (poziom interfejsu API 29) lub starszego, możesz ją przetestować za pomocą zakresu pamięci niezależnie od jej wersji docelowej pakietu SDK i wartości flag pliku manifestu, włączając tę zmianę.

Więcej informacji o zmianach dotyczących miejsca na dane w zakresie na Androidzie 11 znajdziesz w sekcji Ograniczone miejsce na dane na stronie, w której znajdziesz informacje o zmianach dotyczących miejsca na dane na Androidzie w Androidzie 11.

GET_DATA_CONNECTION_STATE_R_VERSION

Zmień identyfikator: 148535736

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aby sprawdzić wersję pakietu SDK PreciseDataConnectionState#getDataConnectionState.

GET_DATA_STATE_R_VERSION

Zmień identyfikator: 148534348

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aby sprawdzić wersję pakietu SDK na potrzeby getDataState().

GET_PROVIDER_SECURITY_EXCEPTIONS

Identyfikator zmiany: 150935354

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego getProvider(String) nie zgłasza już żadnych wyjątków dotyczących zabezpieczeń.

GET_TARGET_SDK_VERSION_CODE_CHANGE

Zmień identyfikator: 145147528

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 10 (poziom interfejsu API 29) lub nowszego.

Aby sprawdzić wersję pakietu SDK dla metody SmsManager.sendResolverResult().

GWP_ASAN

Zmień identyfikator: 135634846

Stan domyślny: wyłączone w przypadku wszystkich aplikacji.

Umożliwia wykrywanie błędów w próbkowanej pamięci natywnej w aplikacjach.

Więcej informacji o tej zmianie znajdziesz w przewodniku GWP-ASan.

HIDE_MAXTARGETSDK_P_HIDDEN_APIS

Zmień identyfikator: 149997251

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 10 (poziom interfejsu API 29) lub nowszego.

W przypadku aplikacji kierowanych na Androida 10 (poziom interfejsu API 29) lub nowszego usuwa dostęp do wszystkich interfejsów innych niż SDK, które znajdują się na liście max-target-p (greylist-max-p) Androida 10 (poziom API 29).

HIDE_MAXTARGETSDK_Q_HIDDEN_APIS

Zmień identyfikator: 149994052

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego usuwa dostęp do wszystkich interfejsów innych niż SDK, które znajdują się na liście max-target-q (greylist-max-q) Androida 11 (poziom API 30).

Więcej informacji o tej zmianie znajdziesz w artykule o interfejsach innych niż SDK, które są teraz zablokowane w Androidzie 11.

LISTEN_CODE_CHANGE

Zmień identyfikator: 147600208

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 10 (poziom interfejsu API 29) lub nowszego.

Aby sprawdzić wersję pakietu SDK na potrzeby TelephonyManager.listen(PhoneStateListener, int).

BRAK_TAGU_APLIKACJI

Zmień identyfikator: 150776642

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11, gdy w pliku manifestu aplikacji brakuje tagu application lub instrumentation, pojawia się błąd.

TAGOWANIE_SERWERA NATIVE_HEAP_POINTER

Zmień identyfikator: 135754954

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 natywne alokacje sterty mają teraz tag inny niż zero w najważniejszym bajcie.

Więcej informacji znajdziesz w artykule Tagowanie wskaźnika sterty.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

Identyfikator zmiany: 150880553

Stan domyślny: włączone w przypadku wszystkich aplikacji.

W przypadku aplikacji kierowanych na Androida 11 obowiązuje teraz limit liczby obiektów PhoneStateListener, które można zarejestrować za pomocą TelephonyManager.listen(PhoneStateListener, int). Domyślny limit to 50, ale może się on zmienić w wyniku aktualizacji konfiguracji urządzeń zdalnych. Ten limit jest egzekwowany za pomocą polecenia IllegalStateException zgłoszonego przez TelephonyManager.listen(PhoneStateListener, int), gdy nieprawidłowy proces próbuje zarejestrować 1 zbyt wiele detektorów.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

Identyfikator zmiany: 142365358

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aplikacje kierowane na Androida 11 nie mogą już korzystać z dodatkowej warstwy refleksji, aby uzyskiwać dostęp do interfejsów spoza SDK, które są objęte ograniczeniami.

IDENTYFIKATOR_PROCESU_CAPABILITY_CHANGE_ID

Zmień identyfikator: 136274596

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 flaga Context.BIND_INCLUDE_CAPABILITIES może teraz być używana do przekazywania funkcji w trakcie użytkowania z procesu klienta do powiązanej usługi.

REMOVE_ANDROID_TEST_BASE

Zmień identyfikator: 133396946

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku aplikacji kierowanych na Androida 11 usunęliśmy bibliotekę android.test.base, jeśli aplikacja nie korzysta z elementu android.test.runner (ponieważ zależy od klas z biblioteki android.test.base).

REQUEST_ACCESSIBILITY_Button_CHANGE

Zmień identyfikator: 136293963

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

W przypadku usług ułatwień dostępu kierowanych na Androida 11 w pliku metadanych usługi ułatwień dostępu należy teraz określić flagę FLAG_REQUEST_ACCESSIBILITY_BUTTON. W przeciwnym razie flaga jest ignorowana.

Więcej informacji na temat tej zmiany znajdziesz w artykule Deklarowanie użycia przycisku ułatwień dostępu w pliku metadanych.

KOMPPRESSED_NA_ZASOBNIKIEM

Zmień identyfikator: 132742131

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Nie można instalować aplikacji kierowanych na Androida 11 (poziom interfejsu API 30), jeśli zawierają skompresowany plik resources.arsc lub ten plik nie jest wyrównany na 4-bajtowej granicy.

Więcej informacji o tej zmianie znajdziesz w artykule Skompresowane pliki zasobów.

RESTRICT_STORAGE_STORAGE_FRAMEWORK

Zmień identyfikator: 141600225

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Jeśli Twoja aplikacja jest kierowana na Androida 11 i korzysta z ramki dostępu do pamięci (SAF), nie będziesz mieć już dostępu do niektórych katalogów za pomocą działań ACTION_OPEN_DOCUMENT i ACTION_OPEN_DOCUMENT_TREE. Więcej informacji o tych zmianach znajdziesz w sekcji Ograniczenia dostępu do dokumentów na stronie, w której omówione są aktualizacje prywatności dotyczące miejsca na dane w Androidzie 11.

SELINUX_LATEST_CHANGES

Zmień identyfikator: 143539591

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Ta zmiana uniemożliwi aplikacjom dostęp do domeny private_app_R-targetSDk SELinux. To jedna z podstawowych zmian w platformie zgodności, która pozwala aplikacjom na przełączanie innych zmian objętych zasadą targetSdkVersion bez zmiany tego elementu (targetSDKVersion). Dlatego nie należy wyłączać tej zmiany w przypadku aplikacji kierowanej na Androida 11, ponieważ w przeciwnym razie aplikacja nie będzie działać.

Ta zmiana nie ma wpływu na aplikacje, które używają udostępnionego identyfikatora użytkownika.

THROW_SECURITY_EXCEPTIONS

Zmień identyfikator: 147340954

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Przed Androidem 11 SecurityException interfejs API setEnabled byłby wywoływany tylko w przypadku błędu uprawnień. W Androidzie 11 ta zasada już nie obowiązuje. Poza tym SecurityException można zgłosić z dowolnej liczby powodów, ale żaden z nich nie jest widoczny dla rozmówcy.

Jeśli w przypadku aplikacji, która nie jest kierowana na Androida 11, wystąpi starszy błąd uprawnień lub brak wymuszenia działania interfejsu API, wyjątek zostanie zmieniony w IllegalStateException, który istniał w źródle przed Androidem 11.

USE_SET_LOCATION_ENABLED

Zmień identyfikator: 117835097

Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom interfejsu API 30) lub nowszego.

Aplikacje administracyjne kierowane na Androida 11 nie mogą już używać narzędzia DevicePolicyManager.setSecureSetting(ComponentName, String, String) do zmiany wycofanego ustawienia Settings.Secure.LOCATION_MODE. Zamiast tego powinni używać DevicePolicyManager.setLocationEnabled(ComponentName, boolean).