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

Abbildung 1: Auf dem Bildschirm „Änderungen bei der App-Kompatibilität“ in den Entwickleroptionen sind die Änderungen aufgeführt, die Sie aktivieren können.

Auf dieser Seite werden alle Verhaltensänderungen beschrieben, die Teil des Kompatibilitätsframeworks in Android 12 (API-Level 31) sind. Verwenden Sie diese Liste in Verbindung mit den Entwickleroptionen und ADB-Befehlen, um Ihre App zu testen und zu debuggen, während Sie sich auf die Unterstützung und Ausrichtung auf Android 12 vorbereiten.

Mit den Tools des Compatibility Framework können Sie unter anderem Folgendes tun:

  • Zielgerichtete Änderungen testen, ohne die targetSdkVersion der App zu ändern Mit den Ein-/Aus-Schaltflächen können Sie bestimmte Änderungen am Verhalten erzwingen, um die Auswirkungen auf Ihre vorhandene App zu bewerten.
  • Konzentrieren Sie sich bei Ihren Tests nur auf bestimmte Änderungen. Anstatt alle Änderungen auf einmal anpassen zu müssen, können Sie mit den Ein-/Aus-Schaltflächen alle Änderungen deaktivieren, mit Ausnahme derjenigen, die Sie testen möchten.
  • Schalter über adb verwalten Mithilfe von adb-Befehlen können Sie die umschaltbaren Änderungen in Ihrer automatisierten Testumgebung aktivieren und deaktivieren.
  • Mithilfe von Standard-Änderungs-IDs schneller Fehler beheben Ein-/Aus-Änderungen haben jeweils eine eindeutige ID und einen Namen, mit denen Sie die Ursache in der Protokollausgabe schnell beheben können.

Ausführliche Informationen zur Verwendung der Tools für die einzelnen Anwendungsfälle finden Sie unter Tools für das Compatibility Framework.

Verhaltensänderungen im Rahmen des Kompatibilitäts-Frameworks

In der Liste in diesem Abschnitt werden alle Verhaltensänderungen beschrieben, die im Kompatibilitäts-Framework von Android 12 enthalten sind.

Sie können die Liste der Änderungen nach Standardstatus filtern.

Verhaltensänderungen, die dem Kompatibilitäts-Framework in Android 12 hinzugefügt wurden

ALWAYS_SANDBOX_DISPLAY_APIS

Change-ID:185004937
Standardstatus: Für alle Apps deaktiviert.

Wenn diese Option aktiviert ist, wird die Display API-Sandbox unabhängig vom Fenstermodus auf ein Paket angewendet. Die Display APIs geben immer die App-Begrenzungen an.

Weitere Informationen zu dieser Änderung finden Sie auf der Seite zu Verhaltensänderungen in Android 12 im Abschnitt zu eingestellten Displaymethoden.

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

Change ID:163400105
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Ab Android 12 kann die Plattform mithilfe des erweiterten AutoFill-Frameworks Vorschläge bereitstellen, die nicht aus Text bestehen (z. B. Bilder). Weitere Informationen finden Sie unter AutoFill-Dienste. Damit eine App diese Vorschläge verarbeiten kann, muss sie normalerweise die OnReceiveContentListener API implementieren.

Damit die Einführung dieser API für Apps, die bereits die InputConnection.commitContent(InputContentInfo, int, Bundle)-API implementiert haben, reibungsloser verläuft, wird diese API als Fallback verwendet, wenn OnReceiveContentListener noch nicht von der App implementiert wurde. Dieser Fallback ist nur unter Android 12 (API-Level 31) aktiviert. Mit dieser Änderungs-ID wird der Fallback deaktiviert. Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind, müssen die OnReceiveContentListener API implementieren, um Vorschläge, die keine Texte sind, zu akzeptieren.

BLOCK_FLAG_SLIPPERY

Änderungs-ID:157929241
Standardstatus: Für alle Apps aktiviert.

Bei Apps, die unter Android 12 (API-Level 31) ausgeführt werden, wird geprüft, ob FLAG_SLIPPERY für Fenster in der App verwendet wird. Wir gehen davon aus, dass dieses Flag wahrscheinlich nur von den Systemkomponenten verwendet wird, da es sich um ein nicht unterstütztes Feld handelt. In diesem Fall wird die Nutzung eingeschränkt.

BLOCK_GPS_STATUS_USAGE

Change ID:144027538
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, muss die gesamte GpsStatus API-Nutzung durch GnssStatus APIs ersetzt werden.

BLOCK_IMMUTABLE_PENDING_INTENTS

Änderungs-ID:171317480
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird für unveränderliche PendingIntent-Objekte, die an Standort-APIs übergeben werden, eine IllegalArgumentException.

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

Änderungs-ID:169887240
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, können LocationRequest-System-APIs nicht mit PendingIntent-Standortanfragen verwendet werden.

BLOCK_UNTRUSTED_TOUCHES

Change-ID:158002302
Standardstatus: Aktiviert für alle Apps.

Um die Systemsicherheit zu gewährleisten und eine gute Nutzererfahrung zu ermöglichen, verhindert Android 12, dass Apps Touch-Ereignisse verbrauchen, wenn ein Overlay die App auf unsichere Weise blockiert.

Weitere Informationen zu dieser Änderung finden Sie unter Nicht vertrauenswürdige Touch-Ereignisse werden blockiert.

CALL_ACTIVITY_RESULT_BEFORE_RESUME

Änderungs-ID:78294732
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, wird der Lebenszyklus des Aktivitätsergebnisses korrigiert, damit eine Aktivität das Aktivitätsergebnis kurz vor der Fortsetzung erhält.

CAMERA_MIC_INDICATORS_NOT_PRESENT

Change-ID:162547999
Standardstatus: Für alle Apps deaktiviert.

Gibt an, dass dieses Gerät Kamera- und Mikrofonsymbole unterstützt. Ist false, wenn vorhanden, da die Methode CompatChanges#isChangeEnabled true zurückgibt, wenn die Änderungs-ID nicht vorhanden ist.

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

Änderungs-ID:146211400
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind, installiert der Paketmanager kein Paket, wenn es fehlerhafte Berechtigungsgruppen gibt. Berechtigungsgruppen sollten nur zwischen Apps geteilt werden, die dasselbe Zertifikat verwenden. Wenn eine Berechtigung zu einer Gruppe gehört, muss diese Gruppe ebenfalls definiert werden.

CHANGE_ID_AUTH_STATE_DENIED

Change ID:181350407
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Client-Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird eine SecurityException geworfen, wenn sie sich im Status „Zugriff verweigert“ befinden und versuchen, eine Nachricht an eine Nano-App zu senden.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

Änderungs-ID:136069189
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, wird eine SecurityException geworfen, wenn sie nicht die Berechtigung HIGH_SAMPLING_RATE_SENSORS haben, im Debug-Modus ausgeführt werden und Abtastfrequenzen anfordern, die schneller als 200 Hz sind.

DELIVER_HISTORICAL_LOCATIONS

Change ID:73144566
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, erhalten Standortclients unter Umständen unter bestimmten Umständen bisherige Standorte (vor dem aktuellen Zeitpunkt).

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

Änderungs-ID:181658987
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bietet für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, Abwärtskompatibilität für Änderungen in TelephonyDisplayInfo.

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

Änderungs-ID:170503758
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, kann die Plattform die Framerate einer App auf einen Teiler der Aktualisierungsrate drosseln, wenn dies besser geeignet ist (z. B. wenn die App Surface.setFrameRate(float, int) aufruft). Bei der gedrosselten Framerate treten bei Apps Choreographer.postFrameCallback(Choreographer.FrameCallback)-Callbacks und Backpressure auf. Apps verwenden Display.getRefreshRate() und Display.Mode.getRefreshRate(), um die Displayaktualisierungsrate zu ermitteln. Display.getRefreshRate() gibt immer die Framerate der Anwendung und nicht die physische Displayaktualisierungsrate zurück, damit Apps das Frame-Pacing korrekt durchführen können. Display.Mode.getRefreshRate() gibt die Framerate der App zurück, wenn sie für eine frühere Version kompiliert wurde. Ab Android 12 (API-Level 31) wird die physische Bildwiederholrate des Displays zurückgegeben.

DOWNSCALED

Change-ID:168419799
Standardstatus: Für alle Apps deaktiviert.

Diese Änderung ist der Gatekeeper für alle Änderungen am App-spezifischen Downscaling des Buffers. Wenn Sie diese Änderung aktivieren, können die folgenden Skalierungsfaktoren angewendet werden:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird die App gezwungenermaßen auf den höchsten aktivierten Skalierungsfaktor verkleinert. Beispiel: Wenn sowohl 80% als auch 70 % (DOWNSCALE_80 und DOWNSCALE_70) aktiviert sind, wird 80 % verwendet.

DOWNSCALE_30

Change-ID:189970040
Standardstatus: Deaktiviert für alle Apps.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 30% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_35

Änderungs-ID:189969749
Standardstatus: Deaktiviert für alle Apps.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 35% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_40

Change-ID:189970038
Standardstatus: Deaktiviert für alle Apps.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 40% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_45

Change-ID:189969782
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 45% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_50

Change-ID:176926741
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 50% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_55

Change-ID:189970036
Standardstatus: Deaktiviert für alle Apps.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 55% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_60

Änderungs-ID:176926771
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 60% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_65

Change-ID:189969744
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 65% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_70

Änderungs-ID:176926829
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 70% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_75

Änderungs-ID:189969779
Standardstatus: Deaktiviert für alle Apps.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 75% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_80

Änderungs-ID:176926753
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 80% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_85

Änderungs-ID:189969734
Standardstatus: Deaktiviert für alle Apps.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 85% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_90

Change-ID:182811243
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 90% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

Änderungs-ID:157629738
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Android TV-Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, sollten jede Fenstergröße verarbeiten, einschließlich Fenstergrößen über 1080p. Bei Apps, die auf ältere Android-Versionen ausgerichtet sind, wird nicht davon ausgegangen, dass Fenster größer als 1080p empfangen werden. Daher werden sie bei Bedarf auf 1080p herunterskaliert.

DROP_CLOSE_SYSTEM_DIALOGS

Change-ID:174664120
Standardstatus: Aktiviert für alle Apps.

Um die Nutzersteuerung bei der Interaktion mit Apps und dem System zu verbessern, wird die Intent-Aktion ACTION_CLOSE_SYSTEM_DIALOGS ab Android 12 eingestellt.

Weitere Informationen zu dieser Änderung finden Sie unter Apps können Systemdialoge nicht schließen.

ENABLE_CHECKS_FOR_PRIVATE_FILES

Änderungs-ID:172100307
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

In Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, können keine privaten Dateien über einen Medienanbieter eingefügt oder aktualisiert werden.

ENABLE_DEFERRED_SCAN

Änderungs-ID:180326732
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie diese Option, um den Scan zu verschieben, der im Rahmen von MediaProvider#update() ausgelöst wird.

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

Change ID:157233955
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktiviert den READ_PHONE_STATE-Schutz für APIs, die den Anrufstatus abfragen und benachrichtigen, z. B. TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription() und TelephonyCallback.CallStateListener, für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

Änderungs-ID:183407956
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, READ_PHONE_NUMBERS- oder READ_PRIVILEGED_PHONE_STATE-Schutzmaßnahmen für getPhoneAccount(PhoneAccountHandle).

ENABLE_INCLUDE_ALL_VOLUMES

Änderungs-ID:182734110
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie diese Option, um Datenbankzeilen von Dateien aus einem kürzlich getrennten Volume in MediaProvider#query einzubeziehen.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

Änderungs-ID:178209446
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Wenn Sie diese Option aktivieren, können Apps mit der Berechtigung Manifest.permission.MANAGE_EXTERNAL_STORAGE den Zugriff auf den externen Rohspeicher anfordern.

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

Änderungs-ID:185199076
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, muss für alle ungenauen Wecker ein Mindestfenster festgelegt werden, das voraussichtlich einige Minuten lang sein wird. Praktisch sind alle Wecker, für die kleinere Zeitfenster erforderlich sind, mit genauen Weckern identisch und sollten die entsprechenden APIs verwenden, z. B. setExact(int, long, PendingIntent). Bei ungenauen Benachrichtigungen mit kürzeren Zeitfenstern werden diese vom System verlängert.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

Change ID:142191088
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, müssen Abhängigkeiten von den öffentlichen freigegebenen Bibliotheken deklariert werden, die vom Gerätehersteller in seiner AndroidManifest.xml mit dem uses-native-library-Tag definiert werden. Wenn eine der Abhängigkeiten nicht erfüllt werden kann (z. B. weil eine der Abhängigkeiten nicht vorhanden ist), installiert der Paketmanager die App nicht. Die Abhängigkeit kann mit dem Attribut android:required im Tag als optional angegeben werden. In diesem Fall wird die Installation nicht beendet, wenn die Abhängigkeit nicht erfüllt wird.

Nach der Installation werden einer App nur die nativen freigegebenen Bibliotheken zur Verfügung gestellt, die im App-Manifest angegeben sind. Wenn dlopen auf eine native freigegebene Bibliothek aufgerufen wird, die nicht im App-Manifest aufgeführt ist, schlägt der Aufruf fehl, auch wenn die Bibliothek tatsächlich auf dem Gerät vorhanden ist.

ENFORCE_STRICT_QUERY_BUILDER

Change-ID:143231523
Standardstatus: Für alle Apps deaktiviert.

Wenn diese Option aktiviert ist, werden alle CalendarProvider2-Abfrageauswahlen von SQLiteQueryBuilder auf schädliche Argumente geprüft.

FGS_BG_START_RESTRICTION_CHANGE_ID

Änderungs-ID:170668199
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird eingeschränkt, wann Apps Dienste im Vordergrund starten können, während sie im Hintergrund ausgeführt werden.

FGS_START_EXCEPTION_CHANGE_ID

Change ID:174041399
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die für Android 12 (API-Level 31) und höher bestimmt sind, kann das System eine IllegalStateException auslösen, wenn eine App versucht, einen Dienst im Vordergrund zu starten, während sie im Hintergrund ausgeführt wird.

FINISH_INPUT_NO_FALLBACK_CONNECTION

Change-ID:156215187
Standardstatus: Deaktiviert für alle Apps.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, beenden Sie die InputConnection, wenn das Gerät non-interactive wird.

Wenn die Funktion vom aktuellen input method aktiviert ist, wird die aktuelle Eingabeverbindung zu finished geändert, sobald die Geräte nicht mehr interaktiv sind.

Wenn diese Option nicht aktiviert ist, wird die aktuelle Eingabeverbindung stattdessen automatisch deaktiviert, wenn das Gerät inaktiv wird. Wenn das Gerät wieder aktiv wird, wird ein onFinishInput()- und ein onStartInput()-Paar gesendet.

FORCE_DISABLE_HEVC_SUPPORT

Change-ID:174227820
Standardstatus: Für alle Apps deaktiviert.

Sie können die Unterstützung der HEVC-Medienfunktion für eine App erzwingen. Apps sollten ihre unterstützten Medienfunktionen in ihrem Manifest deklarieren. Mit diesem Flag kann jedoch erzwungen werden, dass eine App HEVC nicht unterstützt, was eine Transcodierung beim Zugriff auf in HEVC codierte Medien erzwingt. Wenn Sie dieses Flag setzen, werden alle Standardeinstellungen auf Betriebssystemebene für Apps überschrieben. Sie ist standardmäßig deaktiviert, sodass die Standardeinstellungen des Betriebssystems Vorrang haben. Wenn sowohl dieses Flag als auch FORCE_ENABLE_HEVC_SUPPORT aktiviert sind, ignoriert das Betriebssystem beide Flags.

FORCE_ENABLE_HEVC_SUPPORT

Change-ID:174228127
Standardstatus: Deaktiviert für alle Apps.

Erzwingt die Unterstützung der HEVC-Medienfunktion für eine App. Apps müssen ihre unterstützten Medienfunktionen in ihrem Manifest angeben. Mit diesem Flag kann jedoch erzwungen werden, dass eine App HEVC unterstützt, um so eine Transcodierung beim Zugriff auf in HEVC codierte Medien zu vermeiden. Wenn Sie dieses Flag setzen, werden alle Standardeinstellungen für Apps auf Betriebssystemebene überschrieben. Sie ist standardmäßig deaktiviert, sodass die Standardeinstellungen des Betriebssystems Vorrang haben. Wenn sowohl dieses Flag als auch FORCE_DISABLE_HEVC_SUPPORT aktiviert sind, werden beide vom Betriebssystem ignoriert.

FORCE_NON_RESIZE_APP

Change-ID:181136395
Standardstatus: Deaktiviert für alle Apps.

Die Größe der Pakete, auf die er angewendet wird, kann nicht geändert werden.

FORCE_RESIZE_APP

Change ID:174042936
Standardstatus: Deaktiviert für alle Apps.

Erzwingt, dass die Größe der Pakete, auf die er angewendet wird, angepasst werden kann. Wir erlauben nur die Größenänderung im Vollbildmodus, aber nicht die Umstellung der App in den Mehrfenstermodus mit änderbarer Größe.

HIDE_PROP_ICUBINARY_DATA_PATH

Änderungs-ID:171979766
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird der Zugriff auf die Property android.icu.impl.ICUBinary.dataPath entfernt.

IGNORE_ALLOW_BACKUP_IN_D2D

Change ID:183147249
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, wird android:allowBackup bei Geräte-zu-Geräte-Migrationen (D2D) ignoriert.

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

Change ID:180523564
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, werden Ein- und Ausschlussregeln, die mit android:fullBackupContent angegeben sind, bei D2D-Übertragungen (Device-to-Device) ignoriert.

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

Änderungs-ID:169273070
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, gibt getSupportedLocales() jetzt eine leere Sprachenliste zurück, wenn sie nicht festgelegt ist, anstelle der Standardsystemsprache.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

Änderungs-ID:158482162
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, wird die für isBackupServiceActive() erforderliche BACKUP-Berechtigung in BackupManager nicht clientseitig, sondern serverseitig erzwungen.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

Change-ID:169897160
Standardstatus: Deaktiviert für alle Apps.

Wenn diese Option aktiviert ist, schlägt die Erstellung von Keystore-Vorgängen gemäß der neuen Bereinigungsstrategie möglicherweise fehl. Bisher ging Keystore davon aus, dass die Erstellung kryptografischer Vorgänge immer erfolgreich ist. Das KeyMint-Backend hat jedoch nur eine begrenzte Anzahl von Arbeitsslots.

Um den Anschein „unendlicher“ Vorgangsslots aufrechtzuerhalten, entfernt der Keystore-Daemon die zuletzt verwendeten Vorgänge, wenn kein Vorgangsslot verfügbar ist. Dadurch können gute Abläufe vorzeitig beendet werden. Dadurch war AndroidKeystore anfällig für Denial-of-Service-Angriffe (DoS) und unbeabsichtigte Livelocks. Wenn beispielsweise aufgrund von Optimierungen der Energieverwaltung mehrere Apps gleichzeitig aktiviert werden und versuchen, Krypto-Vorgänge auszuführen, beenden sie die Vorgänge der anderen, ohne Fortschritte zu erzielen.

Um Livelocks zu vermeiden und DoS-Angriffe zu erschweren, haben wir die Bereinigungsstrategie so geändert, dass Clients bevorzugt werden, die nur kurz wenige Betriebsslots nutzen. Daher werden einzelne Vorgänge, die nicht länger als 5 Sekunden inaktiv bleiben, fast immer ohne Beeinträchtigung durch die Bereinigungsstrategie abgeschlossen. Es gibt noch einige Vorgänge im Zusammenhang mit der Dateisystemverschlüsselung, die auch diese Vorgänge entfernen können. Diese Fälle sind jedoch extrem selten. Als Nebeneffekt dieser neuen Funktion für die Bereinigungsstrategie kann die Erstellung jetzt fehlschlagen, wenn der Client eine geringere Bereinigungskraft als alle vorhandenen Vorgänge hat.

Bereinigungsstrategie: Um einen geeigneten Kandidaten zu finden, berechnen wir den Malus für den Aufrufer und jeden vorhandenen Vorgang. Der Malus ist das Gegenteil der Beschneidungskraft (Anrufer) oder des Beschneidungswiderstands (bestehender Vorgang). Damit der Aufrufer einen Vorgang entfernen kann, muss er einen Vorgang mit einem höheren Malus finden. Weitere Informationen zur Bereinigungsstrategie finden Sie in der Implementierung von operation.rs. Unter Android 11 (API-Level 30) und niedriger fragt KeyStore2 den Keystore-Daemon nach einem kostenlosen Vorgangs-Slot ab. Bei Apps, die auf Android 11 (API-Level 30) oder niedriger ausgerichtet sind, sieht es weiterhin so aus, als ob die Initialisierung von Chiffren und Signaturobjekten immer erfolgreich ist. Es kann jedoch länger dauern, bis ein Vorgang ausgeführt wird. Alle Android-Versionen profitieren von einer faireren Planung von Betriebszeitfenstern und einer besseren Chance, einen Vorgang erfolgreich abzuschließen.

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

Change ID:174664365
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, kann die Intent.ACTION_CLOSE_SYSTEM_DIALOGS nur gesendet werden, wenn die App auch die Berechtigung android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS hat. Hinweis: Dies ist die strengere Version von #DROP_CLOSE_SYSTEM_DIALOGS. Dabei wird davon ausgegangen, dass die App das Senden der Intent.ACTION_CLOSE_SYSTEM_DIALOGS-Intent beendet, sobald die App auf Android 12 (API-Level 31) oder höher ausgerichtet ist.

LOCK_DOWN_COLLAPSE_STATUS_BAR

Change ID:173031413
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, ist die Berechtigung Manifest.permission.STATUS_BAR erforderlich, um die Statusleiste aus Sicherheitsgründen minimieren zu können. Dieser Fehler wurde von Malware ausgenutzt, um den Zugriff des Nutzers auf wichtige Benachrichtigungen zu verhindern.

LOW_POWER_EXCEPTIONS

Change ID:168936375
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, werden für alle LocationRequest-Objekte, die als leistungsoptimiert gekennzeichnet sind, Ausnahmen ausgelöst, wenn der Aufrufer nicht die Berechtigung LOCATION_HARDWARE hat. Der leistungsoptimierte Teil der Anfrage wird nicht stummgeschaltet.

MISSING_EXPORTED_FLAG

Change ID:150232615
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, muss für das Attribut android:exported immer ein expliziter Wert angegeben werden, wenn ein Intent-Filter definiert ist.

Weitere Informationen zu dieser Änderung finden Sie unter Sicherer Export von Komponenten.

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

Change ID:207557677
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind, wird für native Heap-Zuweisungen im AppZygote-Prozess und seinen untergeordneten Prozessen ein Tag mit einem Wert ungleich 0 im höchstwertigen Byte verwendet.

Weitere Informationen zu dieser Änderung finden Sie unter Getaggte Zeiger.

NATIVE_HEAP_ZERO_INIT

Change-ID:178038272
Standardstatus: Deaktiviert für alle Apps.

Aktivieren Sie die automatische Nullinitialisierung von nativen Heap-Speicherzuweisungen.

NATIVE_MEMTAG_ASYNC

Change-ID:135772972
Standardstatus: Deaktiviert für alle Apps.

Aktivieren Sie in diesem Prozess die asynchrone (ASYNC) Speicher-Tag-Prüfung. Dieses Flag gilt nur für Hardware, die die ARM Memory Tagging Extension (MTE) unterstützt.

NATIVE_MEMTAG_SYNC

Änderungs-ID:177438394
Standardstatus: Deaktiviert für alle Apps.

Aktiviert die synchrone (SYNC) Speicher-Tag-Prüfung in diesem Prozess. Dieses Flag gilt nur für Hardware, die die ARM Memory Tagging Extension (MTE) unterstützt. Wenn sowohl NATIVE_MEMTAG_ASYNC als auch diese Option aktiviert sind, hat diese Option Vorrang und MTE wird im SYNC-Modus aktiviert.

NEVER_SANDBOX_DISPLAY_APIS

Änderungs-ID:184838306
Standardstatus: Deaktiviert für alle Apps.

Wenn diese Option aktiviert ist, wird verhindert, dass die Display API-Sandbox auf eine Mailbox- oder SCM-Aktivität angewendet wird. Die Display APIs stellen weiterhin Begrenzungen für den Displaybereich bereit.

Weitere Informationen zu dieser Änderung finden Sie auf der Seite „12 Verhaltensänderungen bei Android“ im Abschnitt zu Eingestellten Displaymethoden.

NOTIFICATION_CANCELLATION_REASONS

Change ID:175319604
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Ermöglicht es den Benachrichtigungsempfängern, neue, genauere Gründe für die Stornierung zu erfahren.

NOTIFICATION_TRAMPOLINE_BLOCK

Change ID:167676448
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Um die App-Leistung und -Nutzerfreundlichkeit zu verbessern, können Apps, die auf Android 12 ausgerichtet sind, keine Dienste oder Übertragungsempfänger als Trampoline für Benachrichtigungen verwenden.

Weitere Informationen zu dieser Änderung finden Sie unter Benachrichtigungstrampoline können nicht mehr über Dienste oder Broadcastempfänger erstellt werden.

NULL_TELEPHONY_THROW_NO_CB

Änderungs-ID:182185642
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Wird verwendet, um zu prüfen, ob die Ziel-SDK-Version für den aktuellen Prozess Android 12 (API-Level 31) oder höher ist.

Gilt für die folgenden Methoden:

OVERRIDE_MIN_ASPECT_RATIO

Change-ID:174042980
Standardstatus: Für alle Apps deaktiviert.

Diese Änderung ist der Gatekeeper für alle Änderungen, die ein bestimmtes Mindestseitenverhältnis erzwingen. Wenn Sie diese Änderung aktivieren, können die folgenden Mindestseitenverhältnisse angewendet werden:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird das im Manifest der App angegebene Mindestseitenverhältnis durch das größte aktivierte Seitenverhältnis überschrieben, es sei denn, der Manifestwert der App ist höher.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Change-ID:180326787
Standardstatus: Für alle Apps deaktiviert.

Wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist, wird durch diese Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen großen Wert festgelegt, der durch OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE definiert ist.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

Change-ID:180326845
Standardstatus: Für alle Apps deaktiviert.

Wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist, wird durch diese Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert gemäß OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE festgelegt.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

Änderungs-ID:160794467
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, müssen Sie die Veränderlichkeit aller PendingIntent-Objekte angeben, die von Ihrer App erstellt werden. Diese zusätzliche Anforderung trägt zur Sicherheit Ihrer App bei.

Weitere Informationen zu dieser Änderung finden Sie unter Ausstehende Intents müssen als veränderlich deklariert werden.

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

Änderungs-ID:165573442
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Administrator-Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, kann die Passwortqualität nicht über DevicePolicyManager.setPasswordQuality(ComponentName, int) für die DevicePolicyManager-Instanz festgelegt werden, die durch Aufrufen von DevicePolicyManager.getParentProfileInstance(ComponentName) abgerufen wird. Stattdessen sollten sie DevicePolicyManager.setRequiredPasswordComplexity(int) verwenden, um geräteübergreifend grobkörnige Passwortanforderungen festzulegen.

RATE_LIMIT_TOASTS

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

Hiermit wird die Anzahl der Toast.show()-Aufrufe begrenzt, um zu verhindern, dass der Nutzer innerhalb kurzer Zeit zu viele Benachrichtigungen erhält. Wenn versucht wird, in einem bestimmten Zeitraum mehr Toasts anzuzeigen, als zulässig sind, wird der Toast verworfen.

REQUIRE_EXACT_ALARM_PERMISSION

Änderungs-ID:171306433
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.SCHEDULE_EXACT_ALARM, um APIs zum Festlegen genauer Wecker wie setExactAndAllowWhileIdle(int, long, PendingIntent) und setAlarmClock(AlarmClockInfo, PendingIntent) verwenden zu können.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

Change ID:182478738
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.READ_PHONE_STATE, um TelephonyCallback.ActiveDataSubscriptionIdListener aufzurufen.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

Change ID:184323934
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.READ_PHONE_STATE, um TelephonyCallback.CellInfoListener aufzurufen.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

Änderungs-ID:183164979
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.READ_PHONE_STATE, um TelephonyCallback.DisplayInfoListener aufzurufen.

RESTRICT_ADB_BACKUP

Änderungs-ID:171032338
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird adb backup automatisch für Apps aktiviert, die als debugfähig ausgeführt werden (android:debuggable auf true gesetzt). Für alle anderen Apps ist sie nicht verfügbar.

RESTRICT_DOMAINS

Änderungs-ID:175408749
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, ist die aktualisierte Version der API zur Überprüfung von App-Links erforderlich. Das bedeutet, dass eine App Domains in einem Intent-Filter angeben muss, der Folgendes enthält:

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • Nur IntentFilter.SCHEME_HTTP und/oder IntentFilter.SCHEME_HTTPS, keine anderen Schemata

In früheren Android-Versionen war Intent.CATEGORY_BROWSABLE keine Voraussetzung, andere Schemas waren zulässig. Wenn Sie autoVerify in einem Intent-Filter auf true festlegen, wird implizit davon ausgegangen, dass alle Intent-Filter auf autoVerify="true" festgelegt sind.

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

Change ID:151105954
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, wird erzwungen, dass alle attributionTags, die an noteOp(String, int, String), noteProxyOp(String, String) und startOp(String, int, String) gesendet werden, im Manifest des Pakets definiert sind, das als Parameter der Methoden angegeben ist.

Damit diese Änderung aktiviert wird, muss sie sowohl für das Paket gelten, das noteOp(String, int, String) aufruft, als auch für das Paket, das als Parameter der Methode angegeben ist.

SELINUX_LATEST_CHANGES

Change ID:143539591
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, die neuesten SELinux-Änderungen. Wenn Sie diese Änderung für eine App deaktivieren, die auf Android 12 (API-Level 31) oder höher ausgerichtet ist, hat das keine Auswirkungen. Bei Apps, die eine gemeinsame Nutzer-ID verwenden, hat sie ebenfalls keine Auswirkungen.

SETTINGS_API_V2

Change-ID:178111421
Standardstatus: Aktiviert für alle Apps.

Die neue API für Nutzereinstellungen zur Überprüfung von Domains, die in Intent-Filtern in AndroidManifest.xml mit autoVerify=true gekennzeichnet sind, ist in der aktuellen Plattformvorschau noch nicht implementiert. Derzeit ist es möglich, eine Vorschau der neuen Änderungen an den Nutzereinstellungen zu sehen, indem du diese ChangeId aktivierst und den Befehl adb shell pm set-app-links-user-selection oder ähnliche Befehle verwendest.

USE_SHORT_FGS_USAGE_INTERACTION_TIME

Change ID:183972877
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die für Android 12 (API-Level 31) und höher bestimmt sind, wird festgelegt, ob eine kürzere Zeitüberschreitung verwendet wird, bevor der Standby-Bucket auf ACTIVE erhöht wird, wenn Apps einen Dienst im Vordergrund starten.