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. Verwenden Sie diese Liste zusammen mit den Entwickleroptionen und ADB-Befehlen, um Ihre App zu testen und zu debuggen, während Sie sie auf 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-Überlastung onChange(boolean, Uri, int)
, die ein Ganzzahl-flags
-Argument enthält.
Diese neue Methode ist eine öffentliche SDK-Alternative für Apps, die die nicht mit dem SDK verknüpfte Methode onChange()
verwenden, die ein Ganzzahl-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 App vor dem Festlegen der Mindestpasswortlänge zuerst die Methode setPasswordQuality()
und erst danach die Methode setPasswordMinimumLength()
aufrufen.
Wenn außerdem eine Administrator-App, die auf Android 11 ausgerichtet ist, die Passwortqualität verringert, werden alle bestehenden 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 unabhängig von der SDK-Zielversion der anderen App nicht mehr auf Dateien in privaten Datenverzeichnissen einer beliebigen App zugreifen.
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.
Bei 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 im Hintergrund auf den Gerätestandort zugreifen möchten.
Weitere Informationen zu dieser Änderung findest du im Leitfaden zum Zugriff auf die Standortermittlung im Hintergrund in Android 11. Darin werden die Datenschutzänderungen in Bezug auf den Standort in Android 11 erläutert.
ANRUF_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 nun ein Callback an OnSharedPreferenceChangeListener.onSharedPreferenceChanged
mit einem null
-Schlüssel.
Weitere Informationen zu dieser Änderung finden Sie unter Callback-Änderungen für OnSharedPreferencesChangeListener.
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)
sind jetzt erweitert.
ANRUF_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 wurde der geänderte Vorgang vom System zurückgerufen. Nach der Änderung ruft das System den tatsächlich angeforderten Vorgang oder alle getauschten Vorgänge zurück, wenn kein Vorgang angegeben wurde.
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 auf Android 11 ausgerichtet sind, erhalten Dienste im Vordergrund während der Verwendung nur dann Kamera- und Mikrofonfunktionen, wenn der 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 Kamera- und Mikrofonfunktionen.
Weitere Informationen zu dieser Änderung findest du unter Typen von Diensten im Vordergrund unter 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 veröffentlichen, während sie im Hintergrund läuft.
Weitere Informationen zu dieser Änderung finden Sie unter Benutzerdefinierte Toast-Ansichten sind blockiert.
CHANGE_RESTRICT_SAW_INTENT
Änderungs-ID: 135920175
Standardstatus: Diese Änderung kann nicht aktiviert werden. Sie wird nur vom Kompatibilitäts-Framework protokolliert.
Intents, die die Aktion android.settings.MANAGE_APP_OVERLAY_PERMISSION
und das URI-Schema package
verwenden, leiten 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.
TEXT_TOASTS_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. So wird verhindert, dass Apps die 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 eingeschränkten Speicher und können den beschränkten Speicher nicht mehr deaktivieren.
Sie können Ihre App jedoch unabhängig von der SDK-Zielversion und den Werten der Manifest-Flags ohne begrenzten Speicher testen. Dazu deaktivieren Sie diese Änderung.
Weitere Informationen zu den Änderungen am bezogenen Speicher unter Android 11 finden Sie im Abschnitt Begrenzter Speicher auf der Seite zu den Ä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. Aufgrund eines Fehlers auf der Plattform vor Android 11 konnte dieser Fall ohne Fehlermeldung passieren. Dies gilt nicht für Fälle, in denen das Attribut null ist oder fehlt, da dies immer einen Fehler ausgelöst hat.
ANWENDUNGSABFRAGE FILTERN
Ä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 <queries>
-Tag im Manifest der App erfolgen.
Weitere Informationen zum Abfragen und Interagieren mit anderen installierten Apps unter Android 11 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 beschränkten Speicher nicht mehr deaktivieren.
Wenn Ihre App jedoch weiterhin auf Android 10 (API-Level 29) oder niedriger ausgerichtet ist, können Sie sie unabhängig von der SDK-Zielversion und den Manifest-Flag-Werten mit begrenztem Speicher testen, indem Sie diese Änderung aktivieren.
Weitere Informationen zu den Änderungen am bezogenen Speicher unter Android 11 finden Sie im Abschnitt Begrenzter Speicher auf der Seite zu den Ä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.
Um die SDK-Version für PreciseDataConnectionState#getDataConnectionState
zu prüfen.
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, gibt 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.
Die SDK-Version für die Methode SmsManager.sendResolverResult()
prüfen.
GWP_ASAN
Änderungs-ID: 135634846
Standardstatus: Für alle Apps deaktiviert.
Aktiviert die Erkennung von Fehlern im nativen Arbeitsspeicher mit Stichproben 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 Liste max-target-p
(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 Liste max-target-q
(greylist-max-q
) für Android 11 (API-Level 30) sind.
Weitere Informationen zu dieser Änderung findest du unter Nicht-SDK-Schnittstellen, die jetzt in Android 11 blockiert sind.
LISTEN_CODE_CHANGE
Änderungs-ID: 147600208
Standardstatus: Aktiviert für Apps, die auf Android 10 (API-Level 29) oder höher ausgerichtet sind.
So finden 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.
Für 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 im wichtigsten Byte ein Tag ungleich null.
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, ist die Anzahl der PhoneStateListener
-Objekte, die jeder Prozess über TelephonyManager.listen(PhoneStateListener, int)
registrieren kann, jetzt begrenzt.
Das Standardlimit beträgt 50. Dieser Wert kann durch Aktualisierungen der Remote-Gerätekonfiguration geändert werden.
Dieses Limit wird mit einem 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 Reflexionsebene mehr für den Zugriff auf Nicht-SDK-Schnittstellen verwenden, die eingeschränkt sind.
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 jetzt das Flag Context.BIND_INCLUDE_CAPABILITIES
verwendet werden, um Funktionen während der Verwendung 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.
Für Apps, die auf Android 11 ausgerichtet sind, wurde die android.test.base
-Bibliothek entfernt, wenn sie nicht von android.test.runner
abhängt, da sie von Klassen aus der android.test.base
-Bibliothek abhängt.
REQUEST_ACCESSIBILITY_SCHALTFLÄCHE_ÄNDERN
Ä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 Bedienungshilfendienstes angegeben werden.
Andernfalls wird das Flag ignoriert.
Weitere Informationen zu dieser Änderung findest du unter Nutzung der Schaltfläche „Bedienungshilfen“ in Metadatendateien deklarieren.
RESSOURCEN_ARSC_KOMPRIMIERT
Ä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 diese Datei nicht an einer 4-Byte-Grenze ausgerichtet ist.
Weitere Informationen zu dieser Änderung finden Sie unter Komprimierte Ressourcendateien.
EINSCHRÄNKEN_SPEICHERPLATZZUGRIFF_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 dieser Seite im Abschnitt Dokumentzugriffsbeschränkungen. Dort werden die Datenschutzaktualisierungen im Zusammenhang mit dem Speicher unter Android 11 erläutert.
SELINUX_LATEST_ÄNDERUNGEN
Ä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 Anwendungen ermöglicht, andere Änderungen umzuschalten, die von targetSdkVersion
gesteuert werden, ohne die targetSDKVersion
ihrer Anwendung zu ändern. Aus diesem Grund solltest du diese Änderung nicht für eine App deaktivieren, die auf Android 11 ausgerichtet ist. Andernfalls funktioniert die App nicht.
Diese Änderung wirkt sich nicht auf Apps aus, 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 ein SecurityException
nur von setEnabled
APIs bei einem Berechtigungsfehler ausgegeben. Unter Android 11 ist dies nicht mehr der Fall und ein SecurityException
kann aus verschiedenen Gründen ausgelöst werden, wobei dem Aufrufer keinerlei Informationen vorliegen.
Wenn für eine App, die nicht auf Android 11 ausgerichtet ist, ein Legacy-Berechtigungsfehler oder ein Fehler bei der Erzwingung von Akteuren auftritt, wird die Ausnahme in ein IllegalStateException
umgewandelt, das in der Quelle vor Android 11 vorhanden war, um das bestehende API-Verhalten aufrechtzuerhalten.
USE_SET_LOCATION_ACTIVE
Ä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 mit DevicePolicyManager.setSecureSetting(ComponentName, String, String)
die eingestellte Einstellung von Settings.Secure.LOCATION_MODE
nicht mehr ändern. Stattdessen sollte DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
verwendet werden.