Änderungen am Kompatibilitäts-Framework (Android 11)

Auf dieser Seite werden alle Verhaltensänderungen beschrieben, die sich auf Apps auswirken und dem Kompatibilitäts-Framework in Android 11 (API-Level 30) hinzugefügt wurden. Verwende diese Liste in Verbindung mit den Entwickleroptionen und ADB-Befehlen, um deine App zu testen und Fehler zu beheben, während du sie für Android 11 vorbereitest.

ADD_CONTENT_OBSERVER_FLAGS

Änderungs-ID: 150939131

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Für Apps, die auf Android 11 ausgerichtet sind, gibt es eine neue öffentliche API-Überladung onChange(boolean, Uri, int), die ein Ganzzahlargument flags enthält.

Diese neue Methode ist eine öffentliche SDK-Alternative für Apps, die die überladene Nicht-SDK-Methode onChange() mit einem ganzzahligen userId-Argument verwenden.

ADMIN_APP_PASSWORD_COMPLEXITY

Änderungs-ID: 123562444

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Admin-Apps, die auf Android 11 ausgerichtet sind, wird ein Fehler ausgegeben, wenn eine App eine Passwortanforderung festlegt, die für die aktuell zugewiesene Passwortqualität nicht relevant ist. Wenn die Passwortqualität beispielsweise auf DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED festgelegt ist, kann eine App keine Mindestlänge für Passwörter festlegen. In diesem Fall sollte die App vor dem Festlegen der Mindestlänge für Passwörter zuerst die Methode setPasswordQuality() und erst dann die Methode setPasswordMinimumLength() aufrufen.

Wenn eine Admin-App, die auf Android 11 ausgerichtet ist, die Passwortqualität verringert, werden außerdem alle vorhandenen Passwortanforderungen, die nicht mehr gelten, auf ihre Standardwerte zurückgesetzt.

APP_DATA_DIRECTORY_ISOLATION

Änderungs-ID: 143937733

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Apps, die auf Android 11 ausgerichtet sind, können nicht mehr auf Dateien in privaten Datenverzeichnissen beliebiger Apps zugreifen, unabhängig von der Ziel-SDK-Version der anderen App.

Weitere Informationen finden Sie unter Zugriff auf private Verzeichnisse.

APN_READING_PERMISSION_CHANGE_ID

Änderungs-ID: 124107808

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Für Apps, die auf Android 11 ausgerichtet sind, ist für den Zugriff auf die APN-Datenbank jetzt die Berechtigung Manifest.permission.WRITE_APN_SETTINGS erforderlich.

Weitere Informationen zu dieser Änderung finden Sie unter Eingeschränkter Lesezugriff auf die APN-Datenbank.

BACKGROUND_RATIONALE_CHANGE_ID

Änderungs-ID: 147316723

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Apps müssen jetzt jedes Mal eine gültige Begründung angeben, wenn sie Zugriff auf den Standort des Geräts im Hintergrund anfordern.

Weitere Informationen zu dieser Änderung finden Sie im Leitfaden Zugriff auf die Standortermittlung im Hintergrund in Android 11, in dem die datenschutzbezogenen Änderungen im Zusammenhang mit der Standortermittlung in Android 11 erläutert werden.

CALLBACK_ON_CLEAR_CHANGE

Änderungs-ID: 119147584

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Immer wenn Editor.clear aufgerufen wird, wird jetzt ein Callback an OnSharedPreferenceChangeListener.onSharedPreferenceChanged mit einem null-Schlüssel ausgeführt.

Weitere Informationen zu dieser Änderung findest du unter Callback-Änderungen für OnSharedPreferenceChangeListener.

CALLBACK_ON_MORE_ERROR_CODE_CHANGE

Änderungs-ID: 130595455

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Die Fehlercodes für updateAvailableNetworks(List, Executor, Consumer) und setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer) wurden erweitert.

CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE

Änderungs-ID: 148180766

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Dies ist eine geringfügige Verhaltensänderung für startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). Vor dieser Änderung hat das System für den umgeschalteten Vorgang zurückgerufen. Nach der Änderung ruft das System für den tatsächlich angeforderten Vorgang oder für alle umgeschalteten Vorgänge zurück, wenn kein Vorgang angegeben ist.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID

Änderungs-ID: 136219221

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die für Android 11 entwickelt wurden, erhalten Dienste im Vordergrund nur dann Zugriff auf die Kamera und das Mikrofon, wenn R.attr.foregroundServiceType in der Manifestdatei als ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA und ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE konfiguriert ist. In früheren Android-Versionen erhielten Dienste im Vordergrund automatisch Zugriff auf Kamera und Mikrofon.

Weitere Informationen zu dieser Änderung finden Sie unter Arten von Diensten im Vordergrund in Android 11.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

Änderungs-ID: 128611929

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Apps können keine benutzerdefinierten Toasts mehr im Hintergrund posten. Apps können jedoch weiterhin Toasts mit der Methode Toast.makeText(Context, CharSequence, int) und ihren Varianten posten, während sie im Hintergrund ausgeführt werden.

Weitere Informationen zu dieser Änderung finden Sie unter Benutzerdefinierte Toast-Ansichten werden blockiert.

CHANGE_RESTRICT_SAW_INTENT

Änderungs-ID: 135920175

Standardstatus: Diese Änderung kann nicht deaktiviert werden. Sie wird nur vom Kompatibilitäts-Framework protokolliert.

Intents, die die Aktion android.settings.MANAGE_APP_OVERLAY_PERMISSION und das Daten-URI-Schema package verwenden, leiten den Nutzer nicht mehr zu einem App-spezifischen Bildschirm weiter, auf dem die zugehörige Berechtigung verwaltet werden kann. Stattdessen wird der Nutzer zu einem Bildschirm weitergeleitet, auf dem er alle Apps verwalten kann, die die Berechtigung angefordert haben.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

Änderungs-ID: 147798919

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Text-Toasts werden jetzt von der SystemUI statt in der App gerendert. Dadurch wird verhindert, dass Apps Einschränkungen für das Posten benutzerdefinierter Toasts im Hintergrund umgehen.

DEFAULT_SCOPED_STORAGE

Änderungs-ID: 149924527

Standardstatus: Für alle Apps aktiviert.

Alle Apps, die auf Android 11 ausgerichtet sind, verwenden jetzt standardmäßig den begrenzten Speicher und können den begrenzten Speicher nicht mehr deaktivieren.

Du kannst deine App jedoch ohne begrenzten Speicher testen, unabhängig von der Ziel-SDK-Version und den Manifest-Flag-Werten deiner App, indem du diese Änderung deaktivierst.

Weitere Informationen zu den Änderungen am begrenzten Speicher in Android 11 finden Sie im Abschnitt Begrenzter Speicher auf der Seite zu Änderungen am Android-Speicher in Android 11.

EMPTY_INTENT_ACTION_CATEGORY

Änderungs-ID: 151163173

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 ausgerichtet sind, gibt das System jetzt einen Fehler aus, wenn action oder category eines Intent-Filters ein leerer String ist. Ein Fehler in der Plattform vor Android 11 hat dazu geführt, dass dieser Fall ohne Fehlermeldung durchlaufen konnte. Dies gilt nicht für Fälle, in denen das Attribut null ist oder fehlt, da dies immer zu einem Fehler geführt hat.

FILTER_APPLICATION_QUERY

Änderungs-ID: 135549675

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Apps müssen jetzt die Pakete und Intents deklarieren, die sie verwenden möchten, bevor sie Details zu anderen Apps auf einem Gerät abrufen können. Solche Deklarationen müssen mit dem Tag <queries> im Manifest der App erfolgen.

Weitere Informationen zum Abfragen und Interagieren mit anderen installierten Apps in Android 11 finden Sie auf der Datenschutzseite zur Paketsichtbarkeit.

FORCE_ENABLE_SCOPED_STORAGE

Änderungs-ID: Wert: 132649864

Standardstatus: Für alle Apps deaktiviert.

Alle Apps, die auf Android 11 ausgerichtet sind, verwenden jetzt standardmäßig den begrenzten Speicher und können den begrenzten Speicher nicht mehr deaktivieren.

Wenn deine App jedoch weiterhin auf Android 10 (API-Level 29) oder niedriger ausgerichtet ist, kannst du sie mit begrenztem Speicher testen, unabhängig von der Ziel-SDK-Version deiner App und den Manifest-Flag-Werten, indem du diese Änderung aktivierst.

Weitere Informationen zu den Änderungen am begrenzten Speicher in Android 11 finden Sie im Abschnitt Begrenzter Speicher auf der Seite zu Änderungen am Android-Speicher in Android 11.

GET_DATA_CONNECTION_STATE_R_VERSION

Änderungs-ID: 148535736

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

So prüfen Sie die SDK-Version für PreciseDataConnectionState#getDataConnectionState:

GET_DATA_STATE_R_VERSION

Änderungs-ID: 148534348

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

So prüfen Sie die SDK-Version für getDataState():

GET_PROVIDER_SECURITY_EXCEPTIONS

Änderungs-ID: 150935354

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind, löst getProvider(String) keine Sicherheitsausnahmen mehr aus.

GET_TARGET_SDK_VERSION_CODE_CHANGE

Änderungs-ID: 145147528

Standardstatus: Aktiviert für Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind.

Zum Prüfen der SDK-Version für die Methode SmsManager.sendResolverResult().

GWP_ASAN

Änderungs-ID: 135634846

Standardstatus: Für alle Apps deaktiviert.

Ermöglicht die Erkennung von Fehlern im nativen Arbeitsspeicher in Apps.

Weitere Informationen zu dieser Änderung finden Sie im GWP-ASan-Leitfaden.

HIDE_MAXTARGETSDK_P_HIDDEN_APIS

Änderungs-ID: 149997251

Standardstatus: Aktiviert für Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind.

Bei Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind, wird der Zugriff auf alle Nicht-SDK-Schnittstellen entfernt, die Teil der max-target-p-Liste (greylist-max-p) für Android 10 (API-Level 29) sind.

HIDE_MAXTARGETSDK_Q_HIDDEN_APIS

Änderungs-ID: 149994052

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind, wird der Zugriff auf alle Nicht-SDK-Schnittstellen entfernt, die Teil der max-target-q-Liste (greylist-max-q) für Android 11 (API-Level 30) sind.

Weitere Informationen zu dieser Änderung finden Sie unter Nicht-SDK-Schnittstellen, die jetzt in Android 11 blockiert werden.

LISTEN_CODE_CHANGE

Änderungs-ID: 147600208

Standardstatus: Aktiviert für Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind.

So prüfen Sie die SDK-Version für TelephonyManager.listen(PhoneStateListener, int):

MISSING_APP_TAG

Änderungs-ID: 150776642

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 ausgerichtet sind, wird jetzt ein Fehler ausgegeben, wenn in der Manifestdatei einer App ein application- oder instrumentation-Tag fehlt.

NATIVE_HEAP_POINTER_TAGGING

Änderungs-ID: 135754954

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 ausgerichtet sind, haben native Heap-Zuweisungen jetzt ein Tag ungleich null im wichtigsten Byte.

Weitere Informationen finden Sie unter Heap-Zeiger-Tagging.

PHONE_STATE_LISTENER_LIMIT_CHANGE_ID

Änderungs-ID: 150880553

Standardstatus: Für alle Apps aktiviert.

Für Apps, die auf Android 11 ausgerichtet sind, gibt es jetzt eine Beschränkung für die Anzahl der PhoneStateListener-Objekte, die ein Prozess über TelephonyManager.listen(PhoneStateListener, int) registrieren kann. Das Standardlimit ist 50, kann aber durch Remote-Updates der Gerätekonfiguration geändert werden. Dieses Limit wird mithilfe einer IllegalStateException erzwungen, die von TelephonyManager.listen(PhoneStateListener, int) ausgelöst wird, wenn der betreffende Prozess versucht, einen Listener zu viel zu registrieren.

PREVENT_META_REFLECTION_BLACKLIST_ACCESS

Änderungs-ID: 142365358

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Apps, die auf Android 11 ausgerichtet sind, können keine zusätzliche Reflexionsebene mehr verwenden, um auf eingeschränkte Nicht-SDK-Schnittstellen zuzugreifen.

PROCESS_CAPABILITY_CHANGE_ID

Änderungs-ID: 136274596

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 ausgerichtet sind, kann das Flag Context.BIND_INCLUDE_CAPABILITIES jetzt verwendet werden, um Funktionen, die während der Nutzung verfügbar sind, vom Clientprozess an einen gebundenen Dienst zu übergeben.

REMOVE_ANDROID_TEST_BASE

Änderungs-ID: 133396946

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Apps, die auf Android 11 ausgerichtet sind, wurde die android.test.base-Bibliothek entfernt, wenn die App nicht von android.test.runner abhängig ist (da sie von Klassen aus der android.test.base-Bibliothek abhängig ist).

REQUEST_ACCESSIBILITY_BUTTON_CHANGE

Änderungs-ID: 136293963

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Bei Bedienungshilfen, die auf Android 11 ausgerichtet sind, muss das Flag FLAG_REQUEST_ACCESSIBILITY_BUTTON jetzt in der Metadatendatei der Bedienungshilfe angegeben werden. Andernfalls wird das Flag ignoriert.

Weitere Informationen zu dieser Änderung finden Sie unter Verwendung der Schaltfläche „Bedienungshilfen“ in der Metadatendatei deklarieren.

RESOURCES_ARSC_COMPRESSED

Änderungs-ID: 132742131

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Apps, die auf Android 11 (API-Level 30) ausgerichtet sind, können nicht installiert werden, wenn sie eine komprimierte resources.arsc-Datei enthalten oder wenn diese Datei nicht an einer 4-Byte-Grenze ausgerichtet ist.

Weitere Informationen zu dieser Änderung finden Sie unter Komprimierte Ressourcendateien.

RESTRICT_STORAGE_ACCESS_FRAMEWORK

Änderungs-ID: 141600225

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Wenn Ihre App auf Android 11 ausgerichtet ist und das Storage Access Framework (SAF) verwendet, können Sie mit den Intent-Aktionen ACTION_OPEN_DOCUMENT und ACTION_OPEN_DOCUMENT_TREE nicht mehr auf bestimmte Verzeichnisse zugreifen. Weitere Informationen zu diesen Änderungen finden Sie im Abschnitt Einschränkungen beim Dokumentzugriff auf der Seite, auf der Datenschutzupdates im Zusammenhang mit dem Speicher in Android 11 erläutert werden.

SELINUX_LATEST_CHANGES

Änderungs-ID: 143539591

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Durch diese Änderung wird der Zugriff von Apps auf die SELinux-Domain „untrusted_app_R-targetSDk“ eingeschränkt. Dies ist eine der grundlegenden Änderungen im Kompatibilitäts-Framework, mit der Apps andere Änderungen, die durch targetSdkVersion gesteuert werden, aktivieren oder deaktivieren können, ohne die targetSDKVersion der App zu ändern. Aus diesem Grund solltest du diese Änderung für eine App, die auf Android 11 ausgerichtet ist, nicht deaktivieren, da die App sonst nicht funktioniert.

Diese Änderung hat keine Auswirkungen auf Apps, die eine gemeinsame Nutzer-ID verwenden.

THROW_SECURITY_EXCEPTIONS

Änderungs-ID: 147340954

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Vor Android 11 wurde eine SecurityException nur von setEnabled-APIs für einen Berechtigungsfehler ausgelöst. In Android 11 ist dies nicht mehr der Fall und eine SecurityException kann aus verschiedenen Gründen ausgelöst werden, von denen keiner dem Aufrufer angezeigt wird.

Wenn bei einer App, die nicht auf Android 11 ausgerichtet ist, ein Fehler bei einer Legacy-Berechtigung oder ein Fehler bei der Erzwingung von Akteuren auftritt, wird die Ausnahme in eine IllegalStateException umgewandelt, die vor Android 11 in der Quelle vorhanden war. So wird das bestehende API-Verhalten beibehalten.

USE_SET_LOCATION_ENABLED

Änderungs-ID: 117835097

Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.

Admin-Apps, die auf Android 11 ausgerichtet sind, können nicht mehr DevicePolicyManager.setSecureSetting(ComponentName, String, String) verwenden, um die veraltete Einstellung Settings.Secure.LOCATION_MODE zu ändern. Stattdessen sollten sie DevicePolicyManager.setLocationEnabled(ComponentName, boolean) verwenden.