Verhaltensänderungen: alle Apps

Die Android 13-Plattform umfasst Verhaltensänderungen, die sich auf Ihre App auswirken können. Die Die folgenden Verhaltensänderungen gelten für alle Apps, die unter Android 13 ausgeführt werden: unabhängig von targetSdkVersion. Sie sollten Ihre Anwendung testen und dann so ändern, die sie gegebenenfalls unterstützen.

Sehen Sie sich auch die Liste der Verhaltensänderungen an, die sich nur auf Apps auswirken. auf Android 13 ausgerichtet ist.

Leistung und Akku

Task-Manager

<ph type="x-smartling-placeholder">
</ph> Unten auf der Benachrichtigungsleiste befindet sich eine Schaltfläche,
  Anzahl der Apps, die derzeit im Hintergrund ausgeführt werden. Beim Drücken
  klicken, wird ein Dialogfeld mit den Namen der verschiedenen Apps angezeigt. Die
  Die Stopp-Schaltfläche befindet sich rechts neben der jeweiligen App. <ph type="x-smartling-placeholder">
</ph> Abbildung 1: Workflow für den Task-Manager , mit dem Nutzer dürfen Apps mit laufenden Diensten im Vordergrund beenden. Dieser Workflow wird nur auf Geräten mit Android 13 oder höher angezeigt.

Ab Android 13 (API-Level 33) können Nutzer einen Workflow über die Benachrichtigungsleiste zum Stoppen von Apps mit laufenden Diensten im Vordergrund, wie dargestellt in Abbildung 1. Dieses Angebot wird als Task-Manager Apps müssen damit umgehen können vom Nutzer initiiert

Verarbeitung von Prefetch-Jobs mit JobScheduler verbessern

JobScheduler bietet Apps die Möglichkeit, bestimmte Jobs als "Prefetch" zu markieren. (mit JobInfo.Builder.setPrefetch()), was bedeutet, dass sie idealerweise kurz vor und nach der nächsten App-Einführung veröffentlicht, um die Nutzererfahrung zu verbessern. Bisher hat JobScheduler nur das Signal genutzt, damit Prefetch-Jobs möglich sind, opportunistisch kostenlose oder überschüssige Daten verwenden.

Unter Android 13 (API-Level 33) und höher versucht das System, bestimmt, wann eine App das nächste Mal gestartet wird, und verwendet diese Schätzung, Prefetch-Jobs zu starten. Apps sollten Prefetch-Jobs für jede gewünschte Arbeit verwenden vor der nächsten App-Einführung erfolgen.

Akkuressourcennutzung

Android 13 (API-Level 33) bietet folgende Möglichkeiten, das System zu verbessern Verwalten der Akkulaufzeit des Geräts:

Überprüfen Sie beim Testen Ihrer App mit diesen Änderungen Folgendes: Dinge:

  • Testen Sie, wie Ihre App reagiert, wenn sie vom System im eingeschränkten App-Kampagnen Stand-by-Bucket. Verwenden Sie die Methode folgenden ADB-Befehl (Android Debug Bridge), um Ihre Anwendung diesem Bucket zuzuweisen:

    adb shell am set-standby-bucket PACKAGE_NAME restricted
    
  • Teste, wie deine App auf die folgenden, häufig auftretenden Einschränkungen reagiert für Apps, die in eine "eingeschränkte" Bundesland für Akkunutzung im Hintergrund:

    • Dienste im Vordergrund können nicht gestartet werden
    • Vorhandene Dienste im Vordergrund werden aus dem Vordergrund entfernt
    • Es werden keine Wecker ausgelöst
    • Jobs werden nicht ausgeführt

    Verwende den folgenden ADB-Befehl, um deine App in die eingeschränkte Bundesland:

    adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
    

FCM-Kontingente (Firebase Cloud Message) mit hoher Priorität

Unter Android 13 (API-Level 33) werden die FCM-Kontingente (Firebase Cloud Messaging) aktualisiert, um die Zuverlässigkeit der FCM-Zustellung mit hoher Priorität für Apps zu verbessern, die Benachrichtigungen als Reaktion auf FCMs mit hoher Priorität anzeigen. Folgendes hat sich in Android 13 (API-Level 33) geändert:

  • App-Standby-Buckets bestimmen nicht mehr, wie viele FCMs mit hoher Priorität eine App verwenden kann.
  • FCM-Kontingente mit hoher Priorität skalieren proportional zur Anzahl der Benachrichtigungen, die dem Nutzer als Reaktion auf FCMs mit hoher Priorität angezeigt werden.

Wie in früheren Android-Versionen werden FCMs mit hoher Priorität, die das Kontingent überschreiten, auf die normale Priorität herabgestuft. Wenn du Dienste im Vordergrund als Reaktion auf einen FCM startest, solltest du das Ergebnis von RemoteMessage.getPriority() prüfen und bestätigen, dass es PRIORITY_HIGH ist und/oder mögliche ForegroundServiceStartNotAllowedException-Ausnahmen verarbeitet.

Wenn Ihre Anwendung nicht immer Benachrichtigungen als Reaktion auf FCMs mit hoher Priorität veröffentlicht, empfehlen wir, die Priorität dieser FCMs in Normal zu ändern, damit die Nachrichten, die zu einer Benachrichtigung führen, nicht herabgestuft werden.

Datenschutz

Laufzeitberechtigung für Benachrichtigungen

Mit Android 13 (API-Level 33) wird eine Laufzeit eingeführt Berechtigung zum Senden von Benachrichtigungen: POST_NOTIFICATIONS Dank dieser Änderung können sich Nutzer auf die wichtigsten Benachrichtigungen konzentrieren. .

Wir empfehlen dringend, die Ausrichtung so bald wie möglich auf Android 13 oder höher vorzunehmen um die Effekte der zusätzlichen Kontrolle und Flexibilität für diese Funktion.

Weitere Informationen über Best Practices für App-Berechtigungen.

Sensible Inhalte in Zwischenablage ausblenden

Wenn Nutzer in Ihrer App sensible Inhalte wie Passwörter oder Kreditkartendaten kopieren können Kartendaten enthält, müsst ihr in der Zwischenablage das Flag „ClipData“ hinzufügen, ClipDescription, bevor du ClipboardManager#setPrimaryClip() aufrufst. Wird hinzugefügt verhindert dieses Flag, dass sensible Inhalte in der Inhaltsvorschau angezeigt werden.

<ph type="x-smartling-placeholder">
</ph> Vorschau von kopiertem Text, ohne sensible Inhalte zu kennzeichnen <ph type="x-smartling-placeholder">
</ph> Vorschau von kopiertem Text, ohne sensible Inhalte zu kennzeichnen.
<ph type="x-smartling-placeholder">
</ph> Vorschau von kopiertem Text, in der sensible Inhalte gemeldet werden. <ph type="x-smartling-placeholder">
</ph> Vorschau von kopiertem Text, in der sensible Inhalte gemeldet werden.

Fügen Sie dem ClipDescription ein boolesches Extra hinzu, um sensible Inhalte zu kennzeichnen. Alle Apps sollten dies unabhängig vom Ziel-API-Level tun.


// When your app is compiled with the API level 33 SDK or higher
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
    }
}

// If your app is compiled with a lower SDK
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean("android.content.extra.IS_SENSITIVE", true)
    }
}

Weitere Informationen zur neuen Benutzeroberfläche für die Zwischenablage findest du in der Feature-Seite kopieren und einfügen:

Sicherheit

Von freigegebener Nutzer-ID migrieren

Wenn Ihre App die eingestellte Attribut android:sharedUserId und nicht mehr von der Funktionalität des Attributs abhängig ist, können Sie android:sharedUserMaxSdkVersion Attribut auf 32, wie im folgenden Code-Snippet gezeigt:

<manifest ...>
    <!-- To maintain backward compatibility, continue to use
         "android:sharedUserId" if you already added it to your manifest. -->
    android:sharedUserId="SHARED_PACKAGE_NAME"
    android:sharedUserMaxSdkVersion="32"
    ...
</manifest>

Dieses Attribut teilt dem System mit, dass Ihre App nicht mehr auf eine gemeinsam genutzte User-ID. Wenn in deiner App android:sharedUserMaxSdkVersion deklariert ist und neu auf Geräten mit Android 13 oder höher installiert ist, verhält sich so, als hätten Sie android:sharedUserId nie definiert. Aktualisierte Apps verwenden immer noch die vorhandene freigegebene Nutzer-ID.

Freigegebene Nutzer-IDs verursachen ein nicht deterministisches Verhalten im Paketmanager. Ihre App sollte stattdessen geeignete Kommunikationsmechanismen wie Dienste verwenden und Contentanbietern, um die Interoperabilität zwischen gemeinsam genutzten Komponenten zu ermöglichen.

Nutzererfahrung

Benachrichtigungen zu Diensten im Vordergrund schließen

Auf Geräten mit Android 13 oder höher können Nutzer Benachrichtigungen im Zusammenhang mit Vordergrund Dienste von Standardeinstellung.

Hauptfunktion

Legacy-Version des Sprachdienstes entfernt

Unter Android 13 wird die SpeechService-Implementierung entfernt, einschließlich Voice-IME, RecognitionService und eine absichtsbasierte API – von der Google App.

In Android 12 wurden die folgenden Änderungen vorgenommen:

  • SpeechService-Funktionen wurden von zu den Sprachdiensten migriert Google App, was zum Standardanbieter von SpeechService wurde.
  • Die Funktion „RecognitionService“ wurde in das Android-System verschoben Intelligente App zur Unterstützung der Spracherkennung auf dem Gerät

Zur Aufrechterhaltung der Kompatibilität der Apps unter Android 12 wurde die Google App verwendet ein Trampolin, um Traffic an die App „Sprachdienste von Google“ umzuleiten. In Android 13 – dieses Trampolin wurde entfernt.

Apps sollten für SpeechService den Standardanbieter des Geräts verwenden, eine bestimmte App fest programmieren.