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">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:
- Die Regeln dazu wurden aktualisiert, wann das System Ihre App in den "eingeschränkten" App-Kampagnen Stand-by-Bucket.
- Neue Einschränkungen für die Arbeit, die Ihre App ausführen kann, wenn Nutzer Ihre App verwenden in der „eingeschränkt“ Bundesland für Akkunutzung im Hintergrund.
Ü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.
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 vonSpeechService
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.