Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Richtlinie zum Starten von Aktivitäten
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Das Verhalten beim Starten von Aktivitäten wird durch Startmodi in den AndroidManifest.xml
-Dateien von Apps, Intent-Flags und ActivityOptions des Aufrufers definiert. Verwenden Sie ActivityOption#setLaunchDisplayId(int)
, um das Auslösen einer Aktivität auf ein bestimmtes Display auszurichten.
- Standardmäßig wird die Aktivität auf demselben Display gestartet wie der Aufrufer.
Beispielsweise sollte eine neue Instanz einer Aktivität, die über den Launcher gestartet wird, ohne zusätzliche Flags oder Optionen auf demselben Display platziert werden. Achten Sie darauf, für den Start den richtigen Kontext (Aktivität oder Anwendung) zu verwenden.
- Wenn die Aktivierung von einer Quelle aus erfolgt, die nicht mit einem bestimmten Display verknüpft ist (z. B. aus einem Shell- oder Anwendungskontext), wird die Aktivität auf dem Display platziert, auf dem der Nutzer zuletzt mit dem Gerät interagiert hat oder von dem aus die letzte Aktivität gestartet wurde.
- Die Absicht, eine Aktivität zu starten, kann auf eine vorhandene Aktivitäts-Instanz im System verweisen. Wenn in einem solchen Fall keine zusätzlichen Flags angegeben wurden, wird eine Aktivität auf demselben Display angezeigt, auf dem sie zuletzt verwendet wurde. Wenn das Zieldisplay mit
ActivityOptions#setTargetDisplayId()
angegeben ist, wird die Aktivität auf dieses Display verschoben, sofern dies durch Sicherheits- und andere Einschränkungen zulässig ist.
Sicherheitseinschränkungen
Um zu verhindern, dass schädliche Apps vertrauliche Nutzerdaten missbrauchen, indem sie sie von der Oberfläche eines von ihnen erstellten virtuellen Displays lesen, können Apps in Android 10 ihre eigenen Aktivitäten nur auf einem von ihnen erstellten virtuellen Display starten. Aber:
- Systemkomponenten mit der Berechtigung
INTERNAL_SYSTEM_WINDOW
können auf jedem Display gestartet werden.
- Caller mit der Berechtigung
ACTIVITY_EMBEDDING
können Aktivitäten aus anderen Apps starten, die das Flag ActivityInfo.FLAG_ALLOW_EMBEDDED
haben.
- Aktivitätsstarts auf privaten Displays sind nur für den Eigentümer oder für Aktivitäten zulässig, die auf diesem Display vorhanden sind.
Ähnliche Einschränkungen gelten für das Hinzufügen von Fenstern zu Displays.
Android 10 enthält die Methode ActivityManager#isActivityStartAllowedOnDisplay(Context context, int
displayId, Intent intent)
, mit der Sicherheitsbeschränkungen für die App geprüft werden, bevor versucht wird, sie auf einem Display zu starten. Unter Android 9 und niedriger wird bei eingeschränkten Startergebnissen SecurityException
ausgegeben.
Die meisten Sicherheitseinschränkungen werden bei der ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
-Methode angewendet.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Activity launch policy\n\n*Activity launch behavior* is defined by launch modes in the\n`AndroidManifest.xml` files of apps, intent flags, and ActivityOptions\nprovided by the caller. Use `ActivityOption#setLaunchDisplayId(int)` to\ntarget a specific display for activity launch.\n\n- By default, the activity launches on the same display as the caller. For example, a new instance of an activity started from the launcher should be placed on the same display without additional flags or options. Be sure to use the correct context (Activity versus Application) for launch.\n- If the launch is performed from a source not associated with a specific display (such as from a shell or Application context), then the activity is placed on the top display on which the user last interacted with the device or from which the last activity was launched.\n- Intent to launch an activity can be resolved to an existing activity instance in the system. In such a case, if no additional flags were provided, an activity surfaces on the same display where it was last used. If the target display is specified with `ActivityOptions#setTargetDisplayId()`, then the activity is moved to that display (if allowed by security and other restrictions).\n\nSecurity restrictions\n---------------------\n\nTo prevent a malicious app from misappropriating user-sensitive information\nby reading it from the surface of a virtual display that it has created, apps can\nlaunch their own activities *only* on a virtual display of their creation\nin Android 10. However:\n\n- System components with the `INTERNAL_SYSTEM_WINDOW` permission can launch on any display.\n- Callers with the `ACTIVITY_EMBEDDING` permission can launch activities from other apps that have the flag `ActivityInfo.FLAG_ALLOW_EMBEDDED`.\n- Activity launches on private displays are allowed only for the owner or activities present on that display.\n\nSimilar restrictions apply to adding windows to displays.\n\nAndroid 10 includes the\n`ActivityManager#isActivityStartAllowedOnDisplay(Context context, int\ndisplayId, Intent intent)` method to check security restrictions for the\napp before attempting to launch on a display. In Android 9\n(and lower), restricted launch results throw `SecurityException`.\n\nMost security restrictions are applied in the\n`ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()` method."]]