Auf dieser Seite werden alle verhaltensbezogenen Änderungen beschrieben, die sich auf Apps auswirken und in Android 11 (API-Level 30) in das Kompatibilitätsframework aufgenommen wurden. Verwenden Sie diese Liste in Verbindung mit den Entwickleroptionen und ADB-Befehlen, um Ihre App zu testen und zu debuggen, während Sie sie auf Android 11 ausrichten.
ADD_CONTENT_OBSERVER_FLAGS
Änderungs-ID: 150939131
Standardstatus: Für Apps aktiviert, 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 Argument vom Typ „Integer“ (flags) enthält.
Diese neue Methode ist eine öffentliche SDK-Alternative für Apps, die die überladene Methode onChange() ohne SDK verwenden, die ein Argument vom Typ „Integer“ (userId) enthält.
ADMIN_APP_PASSWORD_COMPLEXITY
Änderungs-ID: 123562444
Standardstatus: Für Apps aktiviert, 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 derzeit 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 App zuerst die
setPasswordQuality()
Methode aufrufen, bevor sie versucht, die Mindestpasswortlänge festzulegen. Erst dann sollte sie die
setPasswordMinimumLength()
Methode 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: Für Apps aktiviert, 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 einer beliebigen App 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: Für Apps aktiviert, 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 Manifest.permission.WRITE_APN_SETTINGS
Berechtigung erforderlich.
Weitere Informationen zu dieser Änderung finden Sie unter Eingeschränkter Lesezugriff auf die APN Datenbank.
BACKGROUND_RATIONALE_CHANGE_ID
Änderungs-ID: 147316723
Standardstatus: Für Apps aktiviert, 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 im Hintergrund auf den Standort des Geräts zugreifen möchten.
Weitere Informationen zu dieser Änderung finden Sie in der Anleitung zum Zugriff auf den Standort im Hintergrund in Android 11 . Dort werden die Änderungen am Datenschutz im Zusammenhang mit dem Standort in Android 11 erläutert.
CALLBACK_ON_CLEAR_CHANGE
Änderungs-ID: 119147584
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Wenn
Editor.clear
aufgerufen wird, erfolgt jetzt ein Callback zu
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: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Die Fehlercodes wurden 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: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Dies ist eine subtile Verhaltensänderung für startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener).
Vor dieser Änderung erfolgte ein Callback für den geänderten Vorgang. Nach der Änderung erfolgt ein Callback für den tatsächlich angeforderten Vorgang oder für alle geänderten Vorgänge, wenn kein Vorgang angegeben ist.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID
Änderungs-ID: 136219221
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Bei Apps, die auf Android 11 ausgerichtet sind, erhalten Vordergrunddienste nur dann die
Berechtigungen für Kamera und Mikrofon, wenn die
R.attr.foregroundServiceType
als
ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
bzw.
ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
in der Manifestdatei konfiguriert ist. In früheren Android-Versionen erhielten Vordergrunddienste automatisch die Berechtigungen für Kamera und Mikrofon.
Weitere Informationen zu dieser Änderung finden Sie unter Diensttypen im Vordergrund in Android 11.
CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
Änderungs-ID: 128611929
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Apps können im Hintergrund keine benutzerdefinierten Toasts mehr posten. Sie können jedoch weiterhin
Toasts mit der Toast.makeText(Context, CharSequence,
int)
Methode und ihren Varianten im Hintergrund posten.
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 aktiviert oder deaktiviert werden. Sie wird nur vom Kompatibilitätsframework 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: Für Apps aktiviert, 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 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 begrenzten Speicher und können ihn nicht mehr deaktivieren Speicher.
Sie können Ihre App jedoch auch ohne begrenzten Speicher testen, unabhängig von der Ziel-SDK-Version und den Manifest-Flag-Werten Ihrer App. Deaktivieren Sie dazu diese Änderung.
Weitere Informationen zu den Änderungen am begrenzten Speicher in Android 11 finden Sie im Abschnitt Begrenzter Speicher auf der Seite Änderungen am Android-Speicher in Android 11.
EMPTY_INTENT_ACTION_CATEGORY
Änderungs-ID: 151163173
Standardstatus: Für Apps aktiviert, 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
die action oder
category eines Intent-Filters ein leerer String ist. Ein Fehler in der Plattform vor Android 11 führte dazu, dass dieser Fall ohne Fehlermeldung durchlief. Dies gilt nicht für Fälle, in denen das Attribut null oder nicht vorhanden ist, da in diesen Fällen immer ein Fehler ausgegeben wurde.
FILTER_APPLICATION_QUERY
Änderungs-ID: 135549675
Standardstatus: Für Apps aktiviert, 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 <queries> Tag im Manifest der App vorgenommen werden.
Weitere Informationen zum Abfragen und Interagieren mit anderen installierten Apps in Android 11 finden Sie auf der Datenschutzseite zur Paket Sichtbarkeit.
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 begrenzten Speicher und können ihn nicht mehr deaktivieren Speicher.
Wenn Ihre App jedoch weiterhin auf Android 10 (API-Level 29) oder niedriger ausgerichtet ist, können Sie Ihre App mit begrenztem Speicher testen, unabhängig von der Ziel-SDK-Version und den Manifest-Flag-Werten Ihrer App. Aktivieren Sie dazu diese Änderung.
Weitere Informationen zu den Änderungen am begrenzten Speicher in Android 11 finden Sie im Abschnitt Begrenzter Speicher auf der Seite Änderungen am Android-Speicher in Android 11.
GET_DATA_CONNECTION_STATE_R_VERSION
Änderungs-ID: 148535736
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
SDK-Version für PreciseDataConnectionState#getDataConnectionState prüfen.
GET_DATA_STATE_R_VERSION
Änderungs-ID: 148534348
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
SDK-Version für
getDataState() prüfen.
GET_PROVIDER_SECURITY_EXCEPTIONS
Änderungs-ID: 150935354
Standardstatus: Für Apps aktiviert, 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,
getProvider(String)
gibt keine Sicherheitsausnahmen mehr aus.
GET_TARGET_SDK_VERSION_CODE_CHANGE
Änderungs-ID: 145147528
Standardstatus: Für Apps aktiviert, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind.
SDK-Version für die Methode SmsManager.sendResolverResult() prüfen.
GWP_ASAN
Änderungs-ID: 135634846
Standardstatus: Für alle Apps deaktiviert.
Aktiviert die stichprobenartige Erkennung von Fehlern im nativen Speicher in Apps.
Weitere Informationen zu dieser Änderung finden Sie in der Anleitung zu GWP-ASan.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Änderungs-ID: 149997251
Standardstatus: Für Apps aktiviert, 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 Liste
max-target-p (greylist-max-p)
für Android 10 (API-Level 29) sind.
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
Änderungs-ID: 149994052
Standardstatus: Für Apps aktiviert, 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 Liste
max-target-q (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 sind.
LISTEN_CODE_CHANGE
Änderungs-ID: 147600208
Standardstatus: Für Apps aktiviert, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind.
SDK-Version für TelephonyManager.listen(PhoneStateListener,
int) prüfen.
MISSING_APP_TAG
Änderungs-ID: 150776642
Standardstatus: Für Apps aktiviert, 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 der App ein applicationoder instrumentation Tag fehlt.
NATIVE_HEAP_POINTER_TAGGING
Änderungs-ID: 135754954
Standardstatus: Für Apps aktiviert, 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 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.
Bei 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. Es kann durch Remote-Updates der Gerätekonfiguration geändert werden.
Dieses Limit wird durch eine
IllegalStateException
erzwungen, die von TelephonyManager.listen(PhoneStateListener, int) ausgegeben wird, wenn der
betreffende Prozess versucht, einen Listener zu viel zu registrieren.
PREVENT_META_REFLECTION_BLACKLIST_ACCESS
Änderungs-ID: 142365358
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Apps, die auf Android 11 ausgerichtet sind, können nicht mehr eine zusätzliche Reflexionsebene verwenden, um auf eingeschränkte Nicht-SDK-Schnittstellen zuzugreifen.
PROCESS_CAPABILITY_CHANGE_ID
Änderungs-ID: 136274596
Standardstatus: Für Apps aktiviert, 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 Berechtigungen für die Verwendung während der Nutzung vom Clientprozess an einen
gebundenen Dienst zu übergeben.
REMOVE_ANDROID_TEST_BASE
Änderungs-ID: 133396946
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Bei Apps, die auf Android 11 ausgerichtet sind, wurde die Bibliothek android.test.base entfernt, wenn die App nicht von android.test.runner abhängig ist (da sie von Klassen aus der Bibliothek android.test.base abhängt).
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Änderungs-ID: 136293963
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Bei Bedienungshilfen, die auf Android 11 ausgerichtet sind, muss das
FLAG_REQUEST_ACCESSIBILITY_BUTTON
Flag jetzt in der Metadatendatei der Bedienungshilfe angegeben werden.
Andernfalls wird das Flag ignoriert.
Weitere Informationen zu dieser Änderung finden Sie unter Verwendung des Buttons „Bedienungshilfen“ in der Metadatendatei deklarieren.
RESOURCES_ARSC_COMPRESSED
Änderungs-ID: 132742131
Standardstatus: Für Apps aktiviert, 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 Ressource dateien.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
Änderungs-ID: 141600225
Standardstatus: Für Apps aktiviert, 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 für den Dokumentzugriff
auf der Seite mit den Datenschutz-Updates im Zusammenhang mit dem Speicher in
Android 11.
SELINUX_LATEST_CHANGES
Änderungs-ID: 143539591
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Diese Änderung schränkt den Zugriff von Apps auf die SELinux-Domain untrusted_app_R-targetSDk ein.
Dies ist eine der grundlegenden Änderungen im Kompatibilitätsframework, mit der Apps andere Änderungen aktivieren oder deaktivieren können, die durch targetSdkVersion eingeschränkt werden, ohne die targetSDKVersion ihrer App zu ändern. Aus diesem Grund sollten Sie diese Änderung nicht für eine App deaktivieren, die auf Android 11 ausgerichtet ist. Andernfalls funktioniert die App nicht.
Diese Änderung hat keine Auswirkungen auf Apps, die eine gemeinsame Nutzer-ID verwenden.
THROW_SECURITY_EXCEPTIONS
Änderungs-ID: 147340954
Standardstatus: Für Apps aktiviert, 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 ausgegeben. In Android 11 ist das nicht mehr der Fall. Eine SecurityException kann aus verschiedenen Gründen ausgegeben werden, die dem Aufrufer nicht angezeigt werden.
Um das vorhandene API-Verhalten beizubehalten, wird die Ausnahme in ein
IllegalStateException umgewandelt, das
in der Quelle vor Android 11 vorhanden war, wenn ein Fehler bei der Berechtigung oder bei der Erzwingung des Akteurs
für eine App auftritt, die nicht auf
Android 11 ausgerichtet ist.
USE_SET_LOCATION_ENABLED
Änderungs-ID: 117835097
Standardstatus: Für Apps aktiviert, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Admin-Apps, die auf Android 11 ausgerichtet sind, können
DevicePolicyManager.setSecureSetting(ComponentName, String, String)
nicht mehr verwenden, um die veraltete Einstellung Settings.Secure.LOCATION_MODE
zu ändern. Stattdessen sollten sie DevicePolicyManager.setLocationEnabled(ComponentName, boolean) verwenden.