Auf dieser Seite werden alle verhaltensbezogenen Änderungen beschrieben, die sich auf Apps auswirken und die in Android 11 (API-Level 30) in das Kompatibilitäts-Framework 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 für Android 11 vorbereiten.
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 flags
-Argument vom Typ „integer“ enthält.
Diese neue Methode ist eine öffentliche SDK-Alternative für Apps, in denen die Nicht-SDK-Methode onChange()
mit einem userId
-Ganzzahlargument verwendet wird.
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 ein Fehler ausgegeben, wenn eine App eine Passwortanforderung festlegt, die nicht der aktuell zugewiesenen Passwortqualität entspricht. 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 vor dem Festlegen der Mindestpasswortlänge zuerst die Methode setPasswordQuality()
und erst dann die Methode setPasswordMinimumLength()
aufrufen.
Wenn eine Administrator-App, die auf Android 11 ausgerichtet ist, die Passwortqualität herabsetzt, 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, wenn sie im Hintergrund auf den Standort des Geräts zugreifen möchten, eine gültige Begründung angeben.
Weitere Informationen zu dieser Änderung finden Sie im Leitfaden zum Zugriff auf den Hintergrundstandort in Android 11, in dem Datenschutzänderungen im Zusammenhang mit dem Standort in Android 11 behandelt 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, erfolgt jetzt ein Callback an OnSharedPreferenceChangeListener.onSharedPreferenceChanged
mit einem null
-Schlüssel.
Weitere Informationen zu dieser Änderung finden Sie unter Callback changes for 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 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 subtile Verhaltensänderung für startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
.
Vor dieser Änderung hat das System für den gewechselten Vorgang zurückgerufen. Nach der Änderung ruft das System für den tatsächlich angeforderten Vorgang oder für alle gewechselten 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 bestimmt sind, erhalten Dienste im Vordergrund nur dann die Berechtigungen für die Kamera und das Mikrofon, wenn die Berechtigungen R.attr.foregroundServiceType
und ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
in der Manifestdatei als ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
konfiguriert sind. In früheren Android-Versionen erhielten Vordergrunddienste automatisch Kamera- und Mikrofonfunktionen.
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 im Hintergrund posten, indem sie die Methode Toast.makeText(Context, CharSequence,
int)
und ihre Varianten verwenden.
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äts-Framework protokolliert.
Intents mit der Aktion android.settings.MANAGE_APP_OVERLAY_PERMISSION
und dem Daten-URI-Schema package
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.
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 anstelle 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 Scoped Storage und können nicht mehr deaktiviert werden.
Sie können Ihre App jedoch auch ohne Scoped Storage testen, unabhängig von der Ziel-SDK-Version und den Manifest-Flag-Werten Ihrer App. Dazu müssen Sie diese Änderung deaktivieren.
Weitere Informationen zu den Änderungen am eingeschränkten Speicher in Android 11 finden Sie im Abschnitt Eingeschränkter 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 Fehler durchlaufen wurde. Das gilt nicht für Fälle, in denen das Attribut null oder nicht vorhanden ist, da dies schon immer einen Fehler ausgelöst 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 Erklärungen müssen mit dem <queries>
-Tag 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 Scoped Storage und können nicht mehr deaktiviert werden.
Wenn Ihre App jedoch weiterhin auf Android 10 (API-Level 29) oder niedriger ausgerichtet ist, können Sie sie unabhängig von der Ziel-SDK-Version und den Manifest-Flag-Werten mit dem eingeschränkten Speicher testen, indem Sie diese Änderung aktivieren.
Weitere Informationen zu den Änderungen am eingeschränkten Speicher in Android 11 finden Sie im Abschnitt Eingeschränkter 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, wird für getProvider(String)
keine Sicherheitsausnahme 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 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.
Für 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.
Für 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
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 das Tag application
oder instrumentation
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-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 liegt bei 50. Es kann durch Updates der Konfiguration des Remote-Geräts geändert werden.
Dieses Limit wird durch eine 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 nicht mehr über eine zusätzliche Reflexionsebene auf eingeschränkte Nicht-SDK-Schnittstellen zugreifen.
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 nur bei Verwendung der App 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ängt.
REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Ä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 das Flag FLAG_REQUEST_ACCESSIBILITY_BUTTON
jetzt in der Metadatendatei der Bedienungshilfe angegeben werden.
Andernfalls wird das Flag ignoriert.
Weitere Informationen zu dieser Änderung
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 compressed-Datei vom Typ resources.arsc
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 für den Dokumentzugriff auf der Seite mit Datenschutz-Updates in Bezug auf den Speicher in Android 11.
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, die es Apps ermöglichen, andere Änderungen, die durch targetSdkVersion
gesteuert werden, zu aktivieren oder zu deaktivieren, 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, 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 das nicht mehr der Fall. Eine SecurityException
kann aus verschiedenen Gründen ausgelöst werden, die dem Aufrufer nicht bekannt sind.
Um das vorhandene API-Verhalten beizubehalten, wird die Ausnahme in eine IllegalStateException
umgewandelt, die in der Quelle vor Android 11 vorhanden war, wenn für eine App, die nicht auf Android 11 ausgerichtet ist, ein Fehler bei der alten Berechtigung oder bei der Durchsetzung des Akteurs auftritt.
USE_SET_LOCATION_ENABLED
Änderungs-ID: 117835097
Standardstatus: Aktiviert für Apps, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind.
Administrator-Apps, die auf Android 11 ausgerichtet sind, können DevicePolicyManager.setSecureSetting(ComponentName, String, String)
nicht mehr verwenden, um die Einstellung Settings.Secure.LOCATION_MODE
zu ändern, die nicht mehr unterstützt wird. Stattdessen sollten sie DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
verwenden.