Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Zasady dotyczące uruchamiania aktywności
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Zachowanie podczas uruchamiania aktywności jest definiowane przez tryby uruchamiania w plikach AndroidManifest.xml
aplikacji, flagi intencji i opcji ActivityOptions, które są przekazywane przez wywołującego. Użyj ActivityOption#setLaunchDisplayId(int)
, aby ustawić wyświetlanie konkretnej reklamy na potrzeby uruchamiania aktywności.
- Domyślnie aktywność uruchamia się na tym samym ekranie, na którym wyświetla się wywołujący element.
Na przykład nowy egzemplarz aktywności uruchomionej z poziomu menu powinno się umieścić na tym samym ekranie bez dodatkowych flag lub opcji. Pamiętaj, aby podczas uruchamiania używać właściwego kontekstu (czynność lub aplikacja).
- Jeśli uruchomienie zostało wykonane ze źródła, które nie jest powiązane z określonym wyświetlaczem (np. z otoczki lub kontekstu aplikacji), działanie zostanie umieszczone na górnym wyświetlaczu, na którym użytkownik ostatnio wszedł w interakcję z urządzeniem lub z którego zostało uruchomione ostatnie działanie.
- Intencja uruchomienia aktywności może być rozwiązywana przez istniejący w systemie przypadek aktywności. W takim przypadku, jeśli nie zostały podane żadne dodatkowe flagi, aktywność pojawi się na tym samym ekranie, na którym była ostatnio używana. Jeśli wyświetlacz docelowy jest określony za pomocą parametru
ActivityOptions#setTargetDisplayId()
, aktywność jest przenoszona na ten wyświetlacz (jeśli jest to dozwolone przez zabezpieczenia i inne ograniczenia).
Ograniczenia zabezpieczeń
Aby uniemożliwić złośliwej aplikacji niewłaściwe wykorzystanie poufnych informacji użytkownika przez odczytanie ich z powierzchni utworzonego przez nią wirtualnego wyświetlacza, aplikacje mogą uruchamiać własne czynności tylko na utworzonym przez siebie wirtualnym wyświetlaczu w Androidzie 10. Jednak:
- Komponenty systemowe z uprawnieniem
INTERNAL_SYSTEM_WINDOW
mogą być uruchamiane na dowolnym wyświetlaczu.
- Osoby dzwoniące z uprawnieniami
ACTIVITY_EMBEDDING
mogą uruchamiać aktywności z innych aplikacji, które mają flagę ActivityInfo.FLAG_ALLOW_EMBEDDED
.
- Uruchamianie aktywności na wyświetlaczach prywatnych jest dozwolone tylko dla właściciela lub aktywności obecnych na tym wyświetlaczu.
Podobne ograniczenia dotyczą dodawania okien do wyświetlaczy.
Android 10 zawiera metodę ActivityManager#isActivityStartAllowedOnDisplay(Context context, int
displayId, Intent intent)
, która umożliwia sprawdzenie ograniczeń zabezpieczeń aplikacji przed próbą uruchomienia jej na wyświetlaczu. W Androidzie 9 (i starszych) ograniczone uruchamianie powoduje błąd SecurityException
.
Większość ograniczeń bezpieczeństwa jest stosowanych w przypadku metody ActivityStackSupervisor#isCallerAllowedToLaunchOnDisplay()
.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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."]]