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

Auf dieser Seite werden alle App-Änderungen beschrieben, die sich auf das Verhalten auswirken, die in Android 11 (API-Level 30) in das Kompatibilitäts-Framework aufgenommen wurden. Verwende diese Liste zusammen mit den Entwickleroptionen und ADB-Befehlen, um deine App zu testen und zu debuggen, während du dich auf Android 11 vorbereitest.

ANZEIGEN_INHALTE_OBSERVER_FLAGGEN_hinzufügen

Ä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 die neue öffentliche API-Überlastung onChange(boolean, Uri, int), die ein Ganzzahlargument flags enthält.

Diese neue Methode ist eine öffentliche SDK-Alternative für Apps, die die Methode onChange() verwenden, die ohne SDK überladen ist und ein ganzzahliges userId-Argument enthält.

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 Administrator-Apps, die auf Android 11 ausgerichtet sind, wird immer dann 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 Mindestpasswortlänge festlegen. In diesem Fall sollte die Anwendung vor dem Festlegen der Mindestpasswortlänge zuerst die Methode setPasswordQuality() und erst dann die Methode setPasswordMinimumLength() aufrufen.

Wenn eine Admin-App, die auf Android 11 ausgerichtet ist, die Passwortqualität herabsetzt, werden alle nicht mehr geltenden Passwortanforderungen auf die 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 unabhängig von der SDK-Zielversion der anderen App nicht mehr auf Dateien in privaten Datenverzeichnissen einer App zugreifen.

Weitere Informationen finden Sie unter Zugriff auf private Verzeichnisse.

APN_READING_PERMISSION_CHANGE_ID (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 jetzt für den Zugriff auf die APN-Datenbank die Berechtigung Manifest.permission.WRITE_APN_SETTINGS erforderlich.

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

BACKGROUND_RATIONALE_CHANGE_ID (HINTERGRUND_RATIONALE_ÄNDERUNGS-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 den Zugriff auf den Gerätestandort im Hintergrund anfordern.

Weitere Informationen zu dieser Änderung finden Sie unter Zugriff auf die Standortermittlung im Hintergrund in Android 11. Darin werden Änderungen des Datenschutzes in Bezug auf den Standort in Android 11 erläutert.

Callback_bei_LÖSCHEN_AUFRUFEN

Änderungs-ID: 119147584

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

Bei jedem Aufruf von Editor.clear erfolgt jetzt ein Callback an OnSharedPreferenceChangeListener.onSharedPreferenceChanged mit einem null-Schlüssel.

Weitere Informationen zu dieser Änderung finden Sie 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 wurden jetzt für updateAvailableNetworks(List, Executor, Consumer) und setPreferredOpportunisticDataSubscription(int, boolean, Executor, Consumer) 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 kleine Änderung des Verhaltens in startWatchingMode(String, String, AppOpsManager.OnOpChangedListener). Vor dieser Änderung wird das System für den umgestellten Vorgang zurückgerufen. Nach der Änderung ruft das System für den tatsächlich angeforderten Vorgang oder alle Switches zurück, wenn kein Vorgang angegeben ist.

CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID (KAMERA-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 auf Android 11 ausgerichtet sind, können Dienste im Vordergrund nur Funktionen für die Kamera und das Mikrofon nutzen, während sie verwendet werden, wenn R.attr.foregroundServiceType in der Manifestdatei als ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA bzw. ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE konfiguriert ist. In früheren Android-Versionen erhielten Dienste im Vordergrund automatisch Kamera- und Mikrofonfunktionen.

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

HINTERGRUND_BENUTZERDEFINIERTER_TOAST_BLOCK ÄNDERN

Ä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 im Hintergrund mit der Methode Toast.makeText(Context, CharSequence, int) und ihren Varianten Toasts veröffentlichen.

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

CHANGE_RESTRICT_SAW_INTENT

Änderungs-ID: 135920175

Standardstatus: Diese Änderung kann nicht geändert werden. Es 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 zum Verwalten der zugehörigen Berechtigung weiter. Stattdessen wird der Nutzer zu einem Bildschirm weitergeleitet, auf dem er alle Apps verwalten kann, die die Berechtigung angefordert haben.

TEXT_IN_THE_SYSTEM_ÄNDERN

Ä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 und nicht mehr in der App gerendert. Dadurch wird verhindert, dass Apps die Einschränkungen für das Posten benutzerdefinierter Pop-ups 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 eingeschränkten Speicher und können den begrenzten Speicher nicht mehr deaktivieren.

Sie können Ihre App jedoch unabhängig von der SDK-Zielversion und den Manifest-Flag-Werten Ihrer App ohne beschränkten Speicher testen. Deaktivieren Sie dazu diese Änderung.

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

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. Aufgrund eines Fehlers auf der Plattform vor Android 11 konnte dieser Fall ohne Fehler weitergeleitet werden. Hinweis: Dies gilt nicht für Fälle, in denen das Attribut null ist oder fehlt, da in diesem Fall immer ein Fehler ausgegeben wurde.

FILTER_ANWENDUNGSABFRAGE

Ä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, die sie verwenden möchten, deklarieren, bevor sie Details zu anderen Apps auf einem Gerät abrufen können. Solche Deklarationen müssen mit dem <queries>-Tag im Manifest der App erfolgen.

Weitere Informationen dazu, wie du in Android 11 andere installierte Apps abfragen und mit ihnen interagieren kannst, findest du 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 eingeschränkten Speicher und können den begrenzten Speicher nicht mehr deaktivieren.

Ist Ihre App jedoch noch auf Android 10 (API-Level 29) oder niedriger ausgerichtet, können Sie sie unabhängig von der SDK-Zielversion und den Manifest-Flag-Werten Ihrer App mit eingeschränktem Speicher testen. Aktivieren Sie dazu diese Änderung.

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

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().

SICHERHEIT_ANBIETER_ANBIETER_AUSNAHMEN_ERHALTEN

Ä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, werden von getProvider(String) keine Sicherheitsausnahmen mehr ausgelöst.

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.

So prüfen Sie die SDK-Version für die Methode SmsManager.sendResolverResult().

GWP_ASAN

Änderungs-ID: 135634846

Standardstatus: Für alle Apps deaktiviert.

Aktiviert die Fehlererkennung im gestaffelten 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 in der Liste max-target-p (greylist-max-p) für Android 10 (API-Level 29) enthalten 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 in der Liste max-target-q (greylist-max-q) für Android 11 (API-Level 30) enthalten sind.

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

CODE_ÄNDERUNG_ANHÖREN

Ä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).

FEHLENDES_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.

Für Apps, die auf Android 11 ausgerichtet sind, haben native Heap-Zuweisungen jetzt ein Tag ungleich null im höchstwertigen Byte.

Weitere Informationen finden Sie unter Heap-Pointer-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 ein Limit für die Anzahl der PhoneStateListener-Objekte, die ein Prozess über TelephonyManager.listen(PhoneStateListener, int) registrieren kann. Das Standardlimit beträgt 50, das durch Aktualisierungen der Remote-Gerätekonfiguration geändert werden kann. Dieses Limit wird durch Verwendung eines IllegalStateException erzwungen, der von TelephonyManager.listen(PhoneStateListener, int) ausgelöst wird, wenn der problematische Prozess versucht, einen zu viele Listener 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 Reflexion mehr verwenden, um auf eingeschränkte Nicht-SDK-Schnittstellen zuzugreifen.

PROZESS-CAPABILITY_CHANGE_ID

Änderungs-ID: 136274596

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, kann jetzt das Flag Context.BIND_INCLUDE_CAPABILITIES verwendet werden, um Funktionen während der Nutzung vom Clientprozess an einen gebundenen Dienst zu übergeben.

ANDROID_TEST_BASE_ENTFERNEN

Ä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 sie nicht von android.test.runner abhängig ist, da sie von Klassen aus der android.test.base-Bibliothek abhängt.

ANFORDERUNG_ZUGRIFF_SCHALTFLÄCHE_ÄNDERUNG

Änderungs-ID: 136293963

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

Für Bedienungshilfen, die auf Android 11 ausgerichtet sind, muss jetzt das Flag FLAG_REQUEST_ACCESSIBILITY_BUTTON in der Metadatendatei des Bedienungshilfendiensts angegeben werden. Andernfalls wird das Flag ignoriert.

Weitere Informationen zu dieser Änderung findest du unter Verwendung von Schaltflächen für Bedienungshilfen in Metadatendatei deklarieren.

RESSOURCEN_ARSC_KOMPRESSIERT

Ä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 die Datei nicht an einer 4-Byte-Grenze liegt.

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

BESCHRÄNKUNG_SPEICHERPLATZ_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 auf der Seite mit den Datenschutzaktualisierungen im Zusammenhang mit dem Speicher unter Android 11 im Abschnitt zu den Zugriffsbeschränkungen für Dokumente.

SELINUX_LATEST_CHANGES (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 „nicht vertrauenswürdige_app_R-targetSDk“ eingeschränkt. Dies ist eine der grundlegenden Änderungen im Kompatibilitätsframework, die es Apps ermöglicht, andere Änderungen umzuschalten, die durch targetSdkVersion festgelegt sind, ohne die targetSDKVersion der App zu ändern. Aus diesem Grund solltest du diese Änderung nicht für eine App deaktivieren, die auf Android 11 ausgerichtet ist, da die App sonst nicht funktioniert.

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

THROW_SICHERHEIT_AUSNAHMEN

Änderungs-ID: 147340954

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

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

Wenn für eine App, die nicht auf Android 11 ausgerichtet ist, ein Fehler bei der Legacy-Berechtigung oder beim Erzwingen von Akteuren auftritt, wird die Ausnahme in ein IllegalStateException-Element umgewandelt, das bereits vor Android 11 in der Quelle vorhanden war. So bleibt das vorhandene API-Verhalten erhalten.

USE_SET_LOCATION_AKTIVIERT

Änderungs-ID: 117835097

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

Für Administrator-Apps, die auf Android 11 ausgerichtet sind, kann die eingestellte Einstellung Settings.Secure.LOCATION_MODE nicht mehr mit DevicePolicyManager.setSecureSetting(ComponentName, String, String) geändert werden. Stattdessen sollten sie DevicePolicyManager.setLocationEnabled(ComponentName, boolean) verwenden.