Ta strona zawiera opis każdej zmiany zachowania, która wpływa na aplikacje i została dodana do frameworku zgodności w Androidzie 11 (poziom interfejsu API 30). Korzystaj z tej listy w połączeniu z opcjami dla deweloperów i poleceniami ADB, aby testować i debugować aplikację podczas przygotowywania jej do użycia na Androidzie 11.
ADD_CONTENT_OBSERVER_FLAGS
Identyfikator zmiany: 150939131
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 dostępna jest nowa publiczna metoda interfejsu API onChange(boolean, Uri, int)
, która zawiera argument całkowity flags
.
Ta nowa metoda jest alternatywą dla publicznego pakietu SDK w przypadku aplikacji, które korzystają z przeciążonej metody spoza pakietu SDK onChange()
, która zawiera argument liczby całkowitej userId
.
ADMIN_APP_PASSWORD_COMPLEXITY
Identyfikator zmiany: 123562444
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji administracyjnych kierowanych na Androida 11 wyrzucaj błąd, gdy aplikacja ustawia wymóg hasła, który nie jest istotny dla obecnie przypisanej jakości hasła. Jeśli na przykład jakość hasła jest ustawiona na DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
, aplikacja nie będzie mogła ustawić minimalnej długości hasła. W takim przypadku przed próbą ustawienia minimalnej długości hasła aplikacja powinna najpierw wywołać metodę setPasswordQuality()
, a dopiero potem metodę setPasswordMinimumLength()
.
Ponadto gdy aplikacja administratora kierowana na Androida 11 obniży jakość hasła, wszystkie istniejące wymagania dotyczące hasła, które nie mają już zastosowania, zostaną zresetowane do wartości domyślnych.
APP_DATA_DIRECTORY_ISOLATION
Identyfikator zmiany: 143937733
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje przeznaczone na Androida 11 nie mogą już uzyskiwać dostępu do plików w prywatnych katalogach danych żadnej aplikacji, niezależnie od wersji docelowego pakietu SDK innej aplikacji.
Więcej informacji znajdziesz w artykule Dostęp do katalogów prywatnych.
APN_READING_PERMISSION_CHANGE_ID
Identyfikator zmiany: 124107808
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom 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 do odczytu bazy danych APN.
BACKGROUND_RATIONALE_CHANGE_ID
Identyfikator zmiany: 147316723
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje muszą teraz podawać uzasadnione powody, za każdym razem, gdy proszą o dostęp do lokalizacji urządzenia w tle.
Więcej informacji o tej zmianie znajdziesz w przewodniku Dostęp do lokalizacji w tle w Androidzie 11, który zawiera informacje o zmianach w zakresie prywatności związanych z lokalizacją w Androidzie 11.
CALLBACK_ON_CLEAR_CHANGE
Identyfikator zmiany: 119147584
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Za każdym razem, gdy wywołana zostanie funkcja Editor.clear
, wywoływana jest funkcja OnSharedPreferenceChangeListener.onSharedPreferenceChanged
z kluczem null
.
Więcej informacji o tej zmianie znajdziesz w artykule Zmiany w funkcji wywołania zwrotnego OnSharedPreferenceChangeListener.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
Identyfikator zmiany: 130595455
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Kody błędów zostały teraz rozwinięte w przypadku updateAvailableNetworks(List,
Executor,
Consumer)
i setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
Identyfikator zmiany: 148180766
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
To subtelna zmiana zachowania startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Przed tą zmianą system wywoływał opcję przełączania. Po zmianie system będzie wywoływał opcję, o którą proszono, lub wszystkie opcje przełączania, jeśli nie określono opcji.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
Identyfikator zmiany: 136219221
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 usługi działające na pierwszym planie mają dostęp do kamery i mikrofonu tylko wtedy, gdy w pliku manifestu R.attr.foregroundServiceType
jest odpowiednio skonfigurowany jako ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
lub ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
. We wcześniejszych wersjach Androida usługi na pierwszym planie automatycznie uzyskiwały dostęp do kamery i mikrofonu.
Więcej informacji o tej zmianie znajdziesz w artykule Rodzaje usług działających na pierwszym planie w Androidzie 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
Identyfikator zmiany: 128611929
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje nie mogą już publikować niestandardowych powiadomień w tle. Aplikacje mogą jednak nadal publikować powiadomienia za pomocą metody Toast.makeText(Context, CharSequence,
int)
i jej wariantów w tle.
Więcej informacji o tej zmianie znajdziesz w artykule Niestandardowe wyświetlenia powiadomień są blokowane.
CHANGE_RESTRICT_SAW_INTENT
Identyfikator zmiany: 135920175
Stan domyślny: tej zmiany nie można włączyć ani wyłączyć. Jest on rejestrowany tylko przez system sprawdzania 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 konkretnej aplikacji, na którym można zarządzać powiązanymi uprawnieniami. Zamiast tego użytkownik jest przekierowywany do ekranu, na którym może zarządzać wszystkimi aplikacjami, które poprosiły o to uprawnienie.
CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
Identyfikator zmiany: 147798919
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Komunikaty tekstowe są teraz renderowane przez SystemUI, a nie w aplikacji. Zapobiega to obchodzeniu przez aplikacje ograniczeń dotyczących publikowania niestandardowych komunikatów w tle.
DEFAULT_SCOPED_STORAGE
Identyfikator zmiany: 149924527
Stan domyślny: włączone dla wszystkich aplikacji.
Wszystkie aplikacje przeznaczone na Androida 11 domyślnie korzystają z ograniczonego miejsca na dane i nie mogą już zrezygnować z ograniczonego miejsca na dane.
Możesz jednak przetestować aplikację bez ograniczonego miejsca na dane, niezależnie od wersji docelowego pakietu SDK i wartości flagi w pliku manifestu. Wystarczy, że wyłączysz tę zmianę.
Aby dowiedzieć się więcej o zmianach w ograniczonym miejscu na dane w Androidzie 11, zapoznaj się z sekcją Ograniczone miejsce na dane na stronie poświęconej zmianom w miejscu na dane w Androidzie 11.
EMPTY_INTENT_ACTION_CATEGORY
Identyfikator zmiany: 151163173
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 system zwraca teraz błąd, jeśli filtr intencji zawiera pusty ciąg znaków w polu action
lub category
. Błąd w platformie przed Androidem 11 pozwalał na przepuszczenie tego przypadku bez wyświetlania błędu. Pamiętaj, że nie dotyczy to sytuacji, gdy atrybut jest pusty lub go brakuje, ponieważ zawsze powodowało to błąd.
FILTER_APPLICATION_QUERY
Identyfikator zmiany: 135549675
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje muszą teraz zadeklarować pakiety i intencje, których zamierzają używać, zanim będą mogły uzyskać szczegółowe informacje o innych aplikacjach na urządzeniu. Deklaracje te należy zamieścić w pliku manifestu aplikacji za pomocą tagu <queries>
.
Więcej informacji o wysyłaniu zapytań do innych zainstalowanych aplikacji i współdziałaniu z nimi w Androidzie 11 znajdziesz na stronie poświęconej prywatności widoczności pakietu.
FORCE_ENABLE_SCOPED_STORAGE
Identyfikator zmiany: wartość 132649864
Stan domyślny: wyłączone we wszystkich aplikacjach.
Wszystkie aplikacje przeznaczone na Androida 11 domyślnie korzystają z ograniczonego miejsca na dane i nie mogą już zrezygnować z ograniczonego miejsca na dane.
Jeśli jednak Twoja aplikacja jest nadal kierowana na Androida 10 (poziom interfejsu API 29) lub niższego, możesz przetestować ją z ograniczonym miejscem na dane niezależnie od wersji docelowego pakietu SDK i wartości flagi w manifeście. Aby to zrobić, włącz tę opcję.
Aby dowiedzieć się więcej o zmianach w ograniczonym miejscu na dane w Androidzie 11, zapoznaj się z sekcją Ograniczone miejsce na dane na stronie poświęconej zmianom w miejscu na dane w Androidzie 11.
GET_DATA_CONNECTION_STATE_R_VERSION
Identyfikator zmiany: 148535736
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aby sprawdzić wersję pakietu SDK w przypadku PreciseDataConnectionState#getDataConnectionState
.
GET_DATA_STATE_R_VERSION
Identyfikator zmiany: 148534348
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aby sprawdzić wersję pakietu SDK dla getDataState()
.
GET_PROVIDER_SECURITY_EXCEPTIONS
Identyfikator zmiany: 150935354
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego nie są już zgłaszane żadne wyjątki dotyczące zabezpieczeń.getProvider(String)
GET_TARGET_SDK_VERSION_CODE_CHANGE
Identyfikator zmiany: 145147528
Stan domyślny: włączone dla aplikacji kierowanych na Androida 10 (poziom interfejsu API 29) lub nowszego.
Aby sprawdzić wersję pakietu SDK dla metody SmsManager.sendResolverResult()
.
GWP_ASAN
Identyfikator zmiany: 135634846
Stan domyślny: wyłączone we wszystkich aplikacjach.
Umożliwia wykrywanie w aplikacjach błędów w pamięci natywnej na podstawie próbek.
Więcej informacji o tej zmianie znajdziesz w przewodniku GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Identyfikator zmiany: 149997251
Stan domyślny: włączone dla 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 niebędących interfejsami SDK, które są częścią listy max-target-p
(greylist-max-p
) dla Androida 10 (poziom interfejsu API 29).
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
Identyfikator zmiany: 149994052
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego usuwa dostęp do wszystkich interfejsów niebędących pakietami SDK, które są częścią listy max-target-q
(greylist-max-q
) dla Androida 11 (poziom API 30).
Więcej informacji o tej zmianie znajdziesz w artykule Interfejsy inne niż SDK, które są teraz blokowane w Androidzie 11.
LISTEN_CODE_CHANGE
Identyfikator zmiany: 147600208
Stan domyślny: włączone dla aplikacji kierowanych na Androida 10 (poziom interfejsu API 29) lub nowszego.
Aby sprawdzić wersję pakietu SDK dla TelephonyManager.listen(PhoneStateListener,
int)
.
MISSING_APP_TAG
Identyfikator zmiany: 150776642
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 błąd jest teraz generowany, gdy w pliku manifestu aplikacji brakuje tagu application
lub instrumentation
.
NATIVE_HEAP_POINTER_TAGGING
Identyfikator zmiany: 135754954
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 przydzielenia pamięci natywnych mają teraz niezerowy tag w najistotniejszym bajcie.
Więcej informacji znajdziesz w artykule Tagowanie wskaźnika stosu.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
Identyfikator zmiany: 150880553
Stan domyślny: włączone dla wszystkich aplikacji.
W przypadku aplikacji kierowanych na Androida 11 obowiązuje teraz limit liczby PhoneStateListener
obiektów, które każdy proces może zarejestrować za pomocą TelephonyManager.listen(PhoneStateListener, int)
.
Domyślny limit to 50, ale można go zmienić, aktualizując konfigurację urządzenia zdalnie.
Ten limit jest egzekwowany za pomocą IllegalStateException
, rzucanego przez TelephonyManager.listen(PhoneStateListener, int)
, gdy proces naruszający próbuje zarejestrować zbyt dużą liczbę odbiorców.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
Identyfikator zmiany: 142365358
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje kierowane na Androida 11 nie mogą już używać dodatkowej warstwy odbicia lustrzanego do uzyskiwania dostępu do interfejsów spoza pakietu SDK, które są ograniczone.
PROCESS_CAPABILITY_CHANGE_ID
Identyfikator zmiany: 136274596
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji kierowanych na Androida 11 flaga Context.BIND_INCLUDE_CAPABILITIES
może być teraz używana do przekazywania funkcji używanych w danym momencie z procesu klienta do usługi obsługiwanej przez aplikację.
REMOVE_ANDROID_TEST_BASE
Identyfikator zmiany: 133396946
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku aplikacji przeznaczonych na Androida 11 biblioteka android.test.base
została usunięta, jeśli aplikacja nie jest od niej zależna (ale jest zależna od klas z biblioteki android.test.base
).android.test.runner
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Identyfikator zmiany: 136293963
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
W przypadku usług ułatwień dostępu kierowanych na Androida 11 flaga FLAG_REQUEST_ACCESSIBILITY_BUTTON
musi być teraz określona w pliku metadanych usługi ułatwień dostępu.
W przeciwnym razie flaga jest ignorowana.
Więcej informacji o tej zmianie znajdziesz w artykule Oświadczenie o korzystaniu z przycisku ułatwień dostępu w pliku metadanych.
RESOURCES_ARSC_COMPRESSED
Identyfikator zmiany: 132742131
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje kierowane na Androida 11 (poziom API 30) nie mogą być instalowane, jeśli zawierają skompresowany plik resources.arsc
lub jeśli ten plik nie jest wyrównany co 4 bajty.
Więcej informacji o tej zmianie znajdziesz w artykule Pliki zasobów skompresowanych.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
Identyfikator zmiany: 141600225
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Jeśli Twoja aplikacja jest kierowana na Androida 11 i korzysta z ramy dostępu do pamięci (SAF), nie możesz już uzyskiwać dostępu do niektórych katalogów za pomocą działań intencji ACTION_OPEN_DOCUMENT
i ACTION_OPEN_DOCUMENT_TREE
. Więcej informacji o tych zmianach znajdziesz w sekcji dotyczącej ograniczeń dostępu do dokumentów na stronie poświęconej aktualizacjom dotyczącym prywatności w Androidzie 11.
SELINUX_LATEST_CHANGES
Identyfikator zmiany: 143539591
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Ta zmiana ogranicza dostęp aplikacji do domeny SELinux untrusted_app_R-targetSDk.
Jest to jedno z podstawowych ulepszeń w ramach platformy zgodności, które pozwala aplikacjom przełączać inne zmiany ograniczone przez targetSdkVersion
bez zmiany targetSDKVersion
aplikacji. Z tego powodu nie należy wyłączać tej zmiany w przypadku aplikacji kierowanej na Androida 11, ponieważ w przeciwnym razie nie będzie ona działać.
Ta zmiana nie ma wpływu na aplikacje, które używają wspólnego identyfikatora użytkownika.
THROW_SECURITY_EXCEPTIONS
Identyfikator zmiany: 147340954
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Przed Androidem 11 interfejs API setEnabled
wywoływał błąd SecurityException
tylko w przypadku błędu uprawnień. W Androidzie 11 nie jest to już prawdą i SecurityException
może zostać wywołany z dowolnego powodu, z którego żaden nie jest widoczny dla wywołującego.
Aby zachować dotychczasowe działanie interfejsu API, jeśli w przypadku aplikacji, która nie jest kierowana na Androida 11, wystąpi błąd uprawnień lub błąd egzekwowania, wyjątek zostanie skonwertowany na wyjątek IllegalStateException
, który istniał w źródle przed Androidem 11.
USE_SET_LOCATION_ENABLED
Identyfikator zmiany: 117835097
Stan domyślny: włączone w przypadku aplikacji kierowanych na Androida 11 (poziom API 30) lub nowszego.
Aplikacje administratora kierowane na Androida 11 nie mogą już używać funkcji DevicePolicyManager.setSecureSetting(ComponentName, String, String)
do zmiany wycofanego ustawienia Settings.Secure.LOCATION_MODE
. Zamiast tego należy użyć elementu DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
.