<aktywność>

składnia:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:canDisplayOnRemoteDevices=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["colorMode", "density",
                                 "fontScale", "fontWeightAdjustment",
                                 "grammaticalGender", "keyboard",
                                 "keyboardHidden", "layoutDirection", "locale",
                                 "mcc", "mnc", "navigation", "orientation",
                                 "screenLayout", "screenSize",
                                 "smallestScreenSize", "touchscreen", "uiMode"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:enableOnBackInvokedCallback=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:forceQueryable=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:minAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:preferMinimalPostProcessing=["true" | "false"]
          android:process="string"
          android:recreateOnConfigChanges=["colorMode" | "keyboard" |
                                           "keyboardHidden" | "mcc" | "mnc" |
                                           "navigation" | "touchscreen"]
          android:relinquishTaskIdentity=["true" | "false"]
          android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" |
                                                         "readOrWrite" | "write"] 
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    ...
</activity>
zawiera się w:
<application>
Może zawierać:
<intent-filter>
<meta-data>
<layout>
<property>
description:
Deklaruje działanie (Activity podklasę), które implementuje część wizualnego interfejsu użytkownika aplikacji. Wszystkie działania muszą być reprezentowane przez elementy <activity> w pliku manifestu. Wszystkie, które nie są tam zadeklarowane, nie są widoczne dla systemu i nigdy nie są wyświetlane.
atrybuty:
android:allowEmbedded

Wskazuje, że aktywność można uruchomić jako zagnieżdżoną aktywność podrzędną innej aktywności, zwłaszcza w przypadku, gdy aktywność podrzędna znajduje się w kontenerze, np. w Display należącym do innej aktywności. Na przykład aktywności używane w przypadku niestandardowych powiadomień na Wear deklarują to, aby Wear mógł wyświetlać aktywność w strumieniu kontekstowym, który znajduje się w innym procesie.

Domyślna wartość tego atrybutu to false.

android:allowTaskReparenting
Czy aktywność może przejść z zadania, które ją uruchomiło, do zadania, z którym jest powiązana, gdy to zadanie zostanie przeniesione na pierwszy plan. Jest "true", jeśli może się przemieszczać, a "false", jeśli pozostaje w miejscu, w którym rozpoczęło zadanie.

Jeśli ten atrybut nie jest ustawiony, do aktywności stosowana jest wartość ustawiona przez odpowiedni atrybut allowTaskReparenting elementu <application>. Wartością domyślną jest "false".

Zwykle, gdy rozpoczyna się aktywność, jest ona powiązana z zadaniem, które ją uruchomiło, i pozostaje z nim związana przez cały czas trwania. Możesz użyć tego atrybutu, aby wymusić ponowne przypisanie do zadania, z którym jest powiązany, gdy bieżące zadanie nie jest już wyświetlane. Zazwyczaj służy to do przenoszenia działań aplikacji do głównego zadania powiązanego z tą aplikacją.

Jeśli np. e-mail zawiera link do strony internetowej, kliknięcie tego linku spowoduje wyświetlenie aktywności, która może wyświetlić tę stronę. Ta aktywność jest zdefiniowana przez aplikację przeglądarki, ale jest uruchamiana w ramach zadania e-mail. Jeśli zostanie przeniesiony do zadania przeglądarki, będzie widoczny, gdy przeglądarka przejdzie na pierwszy plan, i niewidoczny, gdy na pierwszy plan ponownie przejdzie zadanie e-maila.

Powiązanie aktywności jest określone przez atrybut taskAffinity. Powiązanie zadania jest określane na podstawie powiązania jego głównej aktywności. Dlatego z definicji aktywność główna zawsze znajduje się w zadaniu o takim samym powinowactwie. Aktywności z trybami uruchamiania "singleTask" lub "singleInstance" mogą znajdować się tylko u podstawy zadania, więc zmiana elementu nadrzędnego jest ograniczona do trybów "standard""singleTop". (Zobacz też atrybut launchMode).

android:alwaysRetainTaskState
Określa, czy stan zadania, w którym występuje aktywność, jest zawsze utrzymywany przez system. "true" – jeśli tak, i "false" – jeśli w określonych sytuacjach system może zresetować zadanie do stanu początkowego. Wartością domyślną jest "false". Ten atrybut ma znaczenie tylko w przypadku głównej aktywności zadania. W przypadku wszystkich pozostałych aktywności jest on ignorowany.

Zwykle system czyści zadanie, usuwając wszystkie działania ze stosu powyżej działania głównego, w określonych sytuacjach, gdy użytkownik ponownie wybierze to zadanie na ekranie głównym. Zwykle dzieje się tak, gdy użytkownik nie odwiedził zadania przez określony czas, np. 30 minut.

Jeśli jednak ten atrybut ma wartość "true", użytkownicy zawsze wracają do zadania w jego ostatnim stanie, niezależnie od tego, jak do niego dotarli. Jest to przydatne w aplikacjach takich jak przeglądarka internetowa, w których występuje wiele stanów, np. wiele otwartych kart, których użytkownicy nie chcą utracić.

android:autoRemoveFromRecents
Określa, czy zadania uruchomione przez aktywność z tym atrybutem pozostają na ekranie ostatnich aplikacji do momentu zakończenia ostatniej aktywności w zadaniu. Jeśli true, zadanie zostanie automatycznie usunięte z ekranu Ostatnie. Zastępuje to użycie przez wywołującego funkcji FLAG_ACTIVITY_RETAIN_IN_RECENTS. Musi to być wartość logiczna, czyli "true" lub "false".
android:banner
Obiekt rysowalny zawierający rozszerzony baner graficzny powiązany z odpowiednim elementem. Użyj tagu <activity>, aby podać domyślny baner dla określonej aktywności, lub tagu <application> , aby podać baner dla wszystkich aktywności aplikacji.

System używa banera do reprezentowania aplikacji na ekranie głównym Androida TV. Baner wyświetla się tylko na ekranie głównym, więc jest określany tylko przez aplikacje z aktywnością, która obsługuje intencję CATEGORY_LEANBACK_LAUNCHER.

Ten atrybut jest ustawiony jako odwołanie do obiektu rysowalnego zawierającego obraz, np. "@drawable/banner". Nie ma domyślnego banera.

Więcej informacji znajdziesz w artykule Wyświetlanie banera na ekranie głównym w sekcji Pierwsze kroki z aplikacjami TV.

android:canDisplayOnRemoteDevices

Wskazuje, czy aktywność może być wyświetlana na urządzeniu zdalnym, które może, ale nie musi, działać na Androidzie. Musi to być wartość logiczna: "true" lub "false".

Domyślna wartość tego atrybutu to "true".

android:clearTaskOnLaunch
Czy wszystkie działania są usuwane z zadania, z wyjątkiem działania głównego, gdy jest ono ponownie uruchamiane z ekranu głównego. "true" – jeśli zadanie jest zawsze sprowadzane do podstawowej aktywności, a "false" – jeśli nie. Wartością domyślną jest "false". Ten atrybut ma znaczenie tylko w przypadku aktywności, które rozpoczynają nowe zadanie – aktywności głównej. Jest on ignorowany w przypadku wszystkich innych działań w ramach zadania.

Gdy wartość wynosi "true", za każdym razem, gdy użytkownicy rozpoczynają zadanie, są przenoszeni do jego głównej aktywności, niezależnie od tego, co robili ostatnio w ramach tego zadania i niezależnie od tego, czy do opuszczenia zadania użyli przycisku Wstecz czy ekranu głównego. Gdy wartość to "false", zadanie może zostać w niektórych sytuacjach oczyszczone z aktywności, ale nie zawsze. Więcej informacji znajdziesz w opisie atrybutu alwaysRetainTaskState.

Załóżmy, że użytkownik uruchamia aktywność P z ekranu głównego, a następnie przechodzi do aktywności Q. Następnie użytkownik klika przycisk Strona główna i wraca do aktywności P. Zwykle użytkownik widzi aktywność Q, ponieważ to było jego ostatnie działanie w ramach zadania P. Jeśli jednak P ustawi tę flagę na "true", wszystkie aktywności znajdujące się nad nią – w tym przypadku Q – zostaną usunięte, gdy użytkownik uruchomi aktywność P z ekranu głównego. Dlatego po powrocie do zadania użytkownik widzi tylko P.

Jeśli ten atrybut i allowTaskReparenting mają wartość "true", wszystkie działania, które można ponownie przypisać, zostaną przeniesione do zadania, z którym są powiązane. Pozostałe działania zostaną odrzucone.

Ten atrybut jest ignorowany, jeśli nie ustawiono wartości FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:colorMode

Określa tryb kolorów aktywności. Jeśli wartość została określona, może to być hdr lub wideColorGamut.

Jeśli hdr, żąda wyświetlania aktywności w wysokim zakresie dynamiki, jeśli urządzenie to obsługuje.

Jeśli wideColorGamut, żąda wyświetlania aktywności w trybie szerokiej gamy kolorów na zgodnych urządzeniach. W trybie szerokiej gamy kolorów okno może renderować poza gamą SRGB, aby wyświetlać bardziej żywe kolory. Jeśli urządzenie nie obsługuje renderowania szerokiej gamy kolorów, ten atrybut nie ma żadnego wpływu. Więcej informacji o renderowaniu w trybie szerokiej gamy kolorów znajdziesz w artykule Ulepszanie grafiki za pomocą treści w szerokiej gamie kolorów.

android:configChanges
Zawiera listę zmian konfiguracji, które są obsługiwane przez działanie. Gdy w czasie działania aplikacji nastąpi zmiana konfiguracji, aktywność zostanie domyślnie zamknięta i ponownie uruchomiona. Zadeklarowanie konfiguracji z tym atrybutem zapobiega jednak ponownemu uruchomieniu aktywności. Zamiast tego aktywność pozostaje uruchomiona i wywoływana jest jej metoda onConfigurationChanged().

Uwaga: używaj tego atrybutu tylko w szczególnych przypadkach, aby poprawić wydajność i szybkość reakcji aplikacji. Więcej informacji znajdziesz w artykule Obsługa zmian konfiguracji.

Prawidłowe wartości tego atrybutu to te ciągi znaków: Wiele wartości jest rozdzielonych znakiem |, np. "locale|navigation|orientation".

Wartość Opis
"colorMode"

Możliwości trybu kolorów ekranu (gamut kolorów lub zakres dynamiczny) zostały zmienione.

Uwaga: tryb koloru, którego aktywność żąda za pomocą atrybutu colorMode lub w czasie działania, różni się od możliwości korzystania z różnych trybów koloru. Aktywność zmieniająca używany tryb kolorów nie powoduje zmiany konfiguracji, ponieważ możliwości kolorystyczne wyświetlacza nie uległy zmianie.

"density"

Zmiana gęstości wyświetlania, np. gdy użytkownik określi inną skalę wyświetlania lub aktywne jest inne urządzenie wyświetlające.

Dodano na poziomie API 24.

"fontScale" Zmiana współczynnika skalowania czcionki, np. gdy użytkownik wybierze nowy globalny rozmiar czcionki.
"fontWeightAdjustment" Zmieniła się wartość zwiększenia grubości czcionki.
"grammaticalGender" Rodzaj gramatyczny języka uległ zmianie. Zobacz GrammaticalInflectionManager.

Dodano na poziomie interfejsu API 34

"keyboard" Zmiana typu klawiatury, np. gdy użytkownik podłączy klawiaturę zewnętrzną.
"keyboardHidden" Zmiana ułatwień dostępu klawiatury, np. gdy użytkownik wyświetli klawiaturę sprzętową.
"layoutDirection"

Zmiana kierunku układu, np. z od lewej do prawej na od prawej do lewej.

Dodano na poziomie API 17.

"locale" Zmiana ustawień regionalnych, np. gdy użytkownik wybierze nowy język, w którym ma być wyświetlany tekst.
"mcc" Zmiana kodu kraju sieci komórkowej (MCC) IMSI po wykryciu karty SIM, która aktualizuje MCC.
"mnc" Zmiana kodu sieci komórkowej IMSI (MNC) po wykryciu karty SIM, która aktualizuje kod MNC.
"navigation" TA change to the navigation type (trackball or D-pad). Zwykle się to nie zdarza.
"orientation"

Zmiana orientacji ekranu, np. gdy użytkownik obróci urządzenie.

Uwaga: jeśli Twoja aplikacja jest kierowana na Androida 3.2 (API na poziomie 13) lub nowszego, zadeklaruj też konfiguracje "screenLayout""screenSize", ponieważ układ i rozmiar ekranu mogą się zmieniać, gdy urządzenie przełącza się między orientacją pionową a poziomą.

"screenLayout" Zmiana układu ekranu, np. gdy uaktywni się inny wyświetlacz.
"screenSize"

Zmiana bieżącego dostępnego rozmiaru ekranu.

Jest to zmiana aktualnie dostępnego rozmiaru w stosunku do bieżącego współczynnika proporcji, więc zmienia się, gdy użytkownik przełącza się między orientacją poziomą a pionową.

Dodano na poziomie 13 interfejsu API.

"smallestScreenSize"

zmiana fizycznego rozmiaru ekranu;

Oznacza to zmianę rozmiaru niezależnie od orientacji, więc zmienia się tylko wtedy, gdy zmienia się rzeczywisty fizyczny rozmiar ekranu, np. po przełączeniu na wyświetlacz zewnętrzny. Zmiana tej konfiguracji odpowiada zmianie w smallestWidthkonfiguracji.

Dodano na poziomie 13 interfejsu API.

"touchscreen" Zmiana trybu ekranu dotykowego, np. gdy użytkownik podłączy lub odłączy urządzenie wejściowe albo przeniesie aplikację na inny wyświetlacz.
"uiMode" Zmiana trybu interfejsu, np. gdy użytkownik umieści urządzenie w stacji dokującej na biurku lub w samochodowej stacji dokującej albo gdy zmieni się tryb nocny. Więcej informacji o różnych trybach interfejsu znajdziesz w sekcji UiModeManager.

Dodano na poziomie API 8.

Wszystkie te zmiany konfiguracji mogą mieć wpływ na wartości zasobów widoczne dla aplikacji. Dlatego po wywołaniu funkcji onConfigurationChanged() zwykle konieczne jest ponowne pobranie wszystkich zasobów, w tym układów widoków i elementów rysowalnych, aby prawidłowo obsłużyć zmianę.

Uwaga: aby obsługiwać zmiany konfiguracji związane z wieloma oknami, używaj zarówno "screenLayout", jak i "smallestScreenSize". Funkcja wielu okien jest obsługiwana na Androidzie 7.0 (poziom interfejsu API 24) i nowszych wersjach.

android:directBootAware

Czy aktywność jest zgodna z bezpośrednim uruchamianiem, czyli czy może działać, zanim użytkownik odblokuje urządzenie.

Uwaga: podczas bezpośredniego uruchamiania aktywność w aplikacji może uzyskiwać dostęp tylko do danych przechowywanych w pamięci chronionej na urządzeniu.

Wartością domyślną jest "false".

android:documentLaunchMode
Określa, jak nowa instancja aktywności jest dodawana do zadania przy każdym uruchomieniu. Ten atrybut umożliwia użytkownikowi wyświetlanie wielu dokumentów z tej samej aplikacji na ekranie Ostatnie.

Ten atrybut ma 4 wartości, które wywołują następujące efekty, gdy użytkownik otworzy dokument w aplikacji:

Wartość Opis
"intoExisting" System wyszukuje zadanie, którego intencja podstawowa ComponentName i identyfikator URI danych są zgodne z intencją uruchamiającą. Jeśli system znajdzie takie zadanie, wyczyści je i uruchomi się ponownie, a działanie główne otrzyma wywołanie funkcji onNewIntent(android.content.Intent). Jeśli system nie znajdzie takiego zadania, utworzy nowe.
"always" Aktywność tworzy nowe zadanie dla dokumentu, nawet jeśli jest on już otwarty. Jest to równoznaczne z ustawieniem flag FLAG_ACTIVITY_NEW_DOCUMENTFLAG_ACTIVITY_MULTIPLE_TASK.
"none" Aktywność nie tworzy nowego zadania. Jest to wartość domyślna, która tworzy nowe zadanie tylko wtedy, gdy ustawiona jest wartość FLAG_ACTIVITY_NEW_TASK. Ekran Ostatnie traktuje aktywność domyślnie: wyświetla jedno zadanie dla aplikacji, które jest wznawiane od ostatniej aktywności wywołanej przez użytkownika.
"never" Aktywność nie jest uruchamiana w nowym dokumencie, nawet jeśli intencja zawiera FLAG_ACTIVITY_NEW_DOCUMENT. To ustawienie zastępuje działanie flag FLAG_ACTIVITY_NEW_DOCUMENTFLAG_ACTIVITY_MULTIPLE_TASK, jeśli któraś z nich jest ustawiona w aktywności, a ekran Ostatnie wyświetla jedno zadanie dla aplikacji, które jest wznawiane od ostatniej aktywności wywołanej przez użytkownika.

Uwaga: w przypadku wartości innych niż "none""never" działanie jest definiowane za pomocą launchMode="standard". Jeśli ten atrybut nie zostanie określony, użyta zostanie wartość documentLaunchMode="none".

android:enabled
Określa, czy system może utworzyć instancję aktywności. Wpisz "true", jeśli jest to możliwe, a "false", jeśli nie. Wartością domyślną jest "true".

Element <application> ma własny atrybut enabled , który ma zastosowanie do wszystkich komponentów aplikacji, w tym do aktywności. Aby system mógł utworzyć instancję aktywności, atrybuty <application><activity> muszą mieć wartość "true", ponieważ domyślnie mają taką wartość. Jeśli którykolwiek z nich ma wartość "false", nie można go utworzyć.

android:enableOnBackInvokedCallback

Ten flag umożliwia rezygnację z przewidywanych animacji systemowych na poziomie aktywności.

Ustaw wartość android:enableOnBackInvokedCallback=false, aby wyłączyć animacje przewidywanego przejścia wstecz na poziomie aktywności i nakazać systemowi ignorowanie wywołań interfejsu API platformy OnBackInvokedCallback.

android:excludeFromRecents

Określa, czy zadanie zainicjowane przez tę aktywność jest wykluczone z  ekranu ostatnich aplikacji. Oznacza to, że gdy ta aktywność jest aktywnością główną nowego zadania, ten atrybut określa, czy zadanie pojawia się na liście ostatnio używanych aplikacji. Jest to "true", jeśli zadanie jest wykluczone z listy, a "false", jeśli jest uwzględnione. Wartością domyślną jest "false".

android:exported

Określa, czy aktywność może być uruchamiana przez komponenty innych aplikacji:

  • Jeśli "true", działanie jest dostępne dla każdej aplikacji i można je uruchomić za pomocą dokładnej nazwy klasy.
  • Jeśli "false", aktywność może być uruchamiana tylko przez komponenty tej samej aplikacji, aplikacje z tym samym identyfikatorem użytkownika lub uprzywilejowane komponenty systemu. Jest to wartość domyślna, gdy nie ma filtrów intencji.

Jeśli aktywność w aplikacji zawiera filtry intencji, ustaw ten element na "true", aby umożliwić innym aplikacjom jej uruchamianie. Jeśli np. aktywność jest główną aktywnością aplikacji i zawiera category android.intent.category.LAUNCHER.

Jeśli ten element ma wartość "false", a aplikacja próbuje uruchomić aktywność, system zgłasza błąd ActivityNotFoundException.

Ten atrybut nie jest jedynym sposobem na ograniczenie widoczności aktywności w innych aplikacjach. Uprawnienia służą też do ograniczania podmiotów zewnętrznych, które mogą wywoływać aktywność. Zobacz atrybut permission.

android:finishOnTaskLaunch
Czy istniejące wystąpienie aktywności (z wyjątkiem aktywności głównej) jest zamykane, gdy użytkownik ponownie uruchamia zadanie, wybierając je na ekranie głównym. Wpisz "true", jeśli jest wyłączony, a "false", jeśli nie. Wartością domyślną jest "false".

Jeśli ten atrybut i atrybutallowTaskReparenting"true" mają wartość "true", ten atrybut ma pierwszeństwo. Powiązanie działania jest ignorowane. Aktywność nie jest ponownie przypisywana do innego elementu nadrzędnego, ale jest niszczona.

Ten atrybut jest ignorowany, jeśli nie ustawiono wartości FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:forceQueryable

Określa, czy ta aktywność jest widoczna dla wszystkich innych aplikacji na urządzeniu, z pominięciem normalnych ograniczeń widoczności pakietu.

Wartością domyślną jest "false".

Więcej informacji znajdziesz w przewodniku na temat automatycznego filtrowania widoczności pakietów.

android:hardwareAccelerated
Określa, czy w przypadku tej aktywności włączone jest renderowanie z akceleracją sprzętową. "true", jeśli jest włączona, lub "false", jeśli nie jest. Wartością domyślną jest "false".

W Androidzie 3.0 i nowszym aplikacje mają dostęp do akcelerowanego sprzętowo renderera OpenGL, który poprawia wydajność wielu typowych operacji graficznych 2D. Gdy renderowanie z akceleracją sprzętową jest włączone, większość operacji w przypadku Canvas, Paint, Xfermode, ColorFilter, Shader i Camera jest przyspieszana.

Dzięki temu animacje są płynniejsze, przewijanie jest bardziej komfortowe, a ogólna responsywność ulega poprawie, nawet w przypadku aplikacji, które nie korzystają bezpośrednio z bibliotek OpenGL platformy. Ze względu na zwiększone zasoby wymagane do włączenia akceleracji sprzętowej aplikacja zużywa więcej pamięci RAM.

Nie wszystkie operacje OpenGL 2D są akcelerowane. Jeśli włączysz mechanizm renderowania z akceleracją sprzętową, sprawdź, czy aplikacja może go używać bez błędów.

android:icon

Ikona reprezentująca aktywność. Ikona jest wyświetlana użytkownikom, gdy na ekranie wymagana jest reprezentacja aktywności. Na przykład ikony aktywności, które inicjują zadania, są wyświetlane w oknie programu uruchamiającego. Ikonie często towarzyszy etykieta. Informacje o etykiecie znajdziesz w atrybucie android:label.

Ten atrybut jest ustawiony jako odwołanie do obiektu rysowalnego zawierającego definicję obrazu. Jeśli nie jest ustawiona, zamiast niej używana jest ikona określona dla całej aplikacji. Więcej informacji znajdziesz w opisie atrybutu icon elementu <application>.

Ikona aktywności, niezależnie od tego, czy została ustawiona tutaj, czy przez element <application>, jest też domyślną ikoną wszystkich filtrów intencji aktywności. Więcej informacji znajdziesz w opisie atrybutu <intent-filter> elementu icon.

android:immersive
Ustawia tryb pełnoekranowy dla bieżącej aktywności. Jeśli jest to "true", element ActivityInfo.flags zawsze ma ustawiony bit FLAG_IMMERSIVE, nawet jeśli tryb immersyjny zmieni się w czasie działania programu za pomocą metody setImmersive().
android:intentMatchingFlags

Użyj tego atrybutu, aby precyzyjnie dostosować sposób, w jaki system dopasowuje przychodzące intencje do komponentów aplikacji. Domyślnie nie są stosowane żadne specjalne reguły dopasowywania.

Wartość ustawiona w tagu <activity> zastępuje wartość ustawioną w tagu <application>.

Wartość musi być co najmniej 1 z tych flag rozdzielonych znakiem „|”:

Flaga Opis
none Wyłącza wszystkie specjalne reguły dopasowywania w przypadku przychodzących intencji. Jeśli podasz kilka flag, sprzeczne wartości zostaną rozwiązane przez nadanie priorytetu fladze none.
enforceIntentFilter

Wymaga bardziej rygorystycznego dopasowywania przychodzących intencji:

  • Intencje jawne muszą być zgodne z filtrem intencji komponentu docelowego.
  • Intencje bez działania nie pasują do żadnego filtra intencji.
allowNullAction

Zmienia reguły dopasowywania, aby umożliwić dopasowywanie intencji bez działania. Ten flag jest używany w połączeniu z parametrem enforceIntentFilter, aby uzyskać następujące działanie:

  • Intencje jawne muszą być zgodne z filtrem intencji komponentu docelowego.
  • Intencje bez działania mogą pasować do dowolnego filtra intencji.

Więcej informacji znajdziesz w sekcji Bezpieczniejsze intencje w artykule o zmianach w działaniu Androida 16 (poziom interfejsu API 36).

android:label

Etykieta aktywności czytelna dla użytkownika. Etykieta wyświetla się na ekranie, gdy aktywność jest prezentowana użytkownikowi. Często wyświetla się obok ikony aktywności. Jeśli ten atrybut nie jest ustawiony, używana jest etykieta ustawiona dla całej aplikacji. Zobacz atrybut label elementu <application>.

Etykieta aktywności, niezależnie od tego, czy została ustawiona tutaj, czy za pomocą elementu <application>, jest też domyślną etykietą wszystkich filtrów intencji aktywności. Więcej informacji znajdziesz w opisie atrybutu <intent-filter> elementu label.

Etykieta jest ustawiona jako odwołanie do zasobu tekstowego, dzięki czemu można ją zlokalizować tak jak inne ciągi znaków w interfejsie. Jednak dla wygody podczas tworzenia aplikacji można go też ustawić jako surowy ciąg znaków.

android:launchMode

Instrukcja uruchamiania aktywności. Dostępnych jest 5 trybów, które działają w połączeniu z flagami aktywności (stałymi FLAG_ACTIVITY_*) w obiektach Intent, aby określić, co się stanie, gdy aktywność zostanie wywołana w celu obsługi intencji:

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

Trybem domyślnym jest "standard".

Jak widać w tabeli poniżej, tryby dzielą się na 2 główne grupy: z jednej strony działania "standard""singleTop", a z drugiej – "singleTask", "singleInstance""singleInstancePerTask". Aktywność z trybem uruchamiania "standard" lub "singleTop" można utworzyć wiele razy.

Instancje mogą należeć do dowolnego zadania i znajdować się w dowolnym miejscu w zadaniu związanym z aktywnością. Zazwyczaj są one uruchamiane w zadaniu, które wywołało startActivity(), chyba że obiekt Intent zawiera instrukcję FLAG_ACTIVITY_NEW_TASK, w którym to przypadku wybierane jest inne zadanie. Więcej informacji znajdziesz w opisie atrybutu taskAffinity.

Natomiast działania "singleTask", "singleInstance""singleInstancePerTask" zachowują się inaczej. "singleInstancePerTask" zawsze znajduje się u podstawy zadania związanego z aktywnością. Poza tym urządzenie może przechowywać tylko 1 instancję aktywności "singleInstance"naraz, a aktywność "singleInstancePerTaskmoże być tworzona wielokrotnie w różnych zadaniach, gdy ustawiona jest wartość FLAG_ACTIVITY_MULTIPLE_TASK lub FLAG_ACTIVITY_NEW_DOCUMENT.

Aktywność z trybem uruchamiania "singleTask" łączy w sobie zachowania trybów "singleInstance""singleInstancePerTask": aktywność może być wielokrotnie tworzona i może znajdować się w dowolnym miejscu w zadaniu tego samego typu taskAffinity. Urządzenie może jednak przechowywać tylko 1 zadanie lokalizowania aktywności "singleTask" w katalogu głównym zadania aktywności.

Tryby "standard""singleTop" różnią się od siebie tym, że za każdym razem, gdy w przypadku aktywności "standard" pojawi się nowy zamiar, tworzona jest nowa instancja klasy, która na niego odpowiada. Każda instancja obsługuje jeden zamiar. Podobnie można utworzyć nowe wystąpienie aktywności "singleTop", aby obsłużyć nowy zamiar.

Jeśli jednak zadanie docelowe ma już instancję działania na górze stosu, ta instancja otrzyma nowy zamiar w wywołaniu onNewIntent(). Nowa instancja nie zostanie utworzona. W przeciwnym razie – jeśli istniejąca instancja działania "singleTop" znajduje się w docelowym zadaniu, ale nie na górze stosu, lub jeśli znajduje się na górze stosu, ale nie w docelowym zadaniu – tworzona jest nowa instancja, która jest umieszczana na stosie.

Podobnie jeśli użytkownik przejdzie do aktywności na bieżącym stosie, zachowanie jest określane przez tryb uruchamiania aktywności nadrzędnej. Jeśli aktywność nadrzędna ma tryb uruchamiania singleTop (lub intencja up zawiera FLAG_ACTIVITY_CLEAR_TOP), aktywność nadrzędna jest przenoszona na wierzch stosu, a jej stan jest zachowywany.

Intencja nawigacji jest odbierana przez metodę onNewIntent() aktywności nadrzędnej. Jeśli aktywność nadrzędna ma tryb uruchamiania standard, a intencja up nie zawiera FLAG_ACTIVITY_CLEAR_TOP, bieżąca aktywność i jej element nadrzędny zostaną usunięte ze stosu, a nowa instancja aktywności nadrzędnej zostanie utworzona w celu odebrania intencji nawigacji.

Tryb "singleInstance" różni się od trybów "singleTask""singleInstancePerTask" tylko w jednym aspekcie: aktywność z trybem uruchamiania "singleTask" lub "singleInstancePerTask" umożliwia innym aktywnościom, w tym aktywnościom "standard""singleTop", udział w jej zadaniu.

Zadanie typu A "singleInstance" nie może zawierać żadnych innych działań. Musi to być jedyna aktywność w zadaniu. Jeśli rozpocznie inną aktywność, zostanie ona przypisana do innego zadania, tak jakby w intencji znajdował się element FLAG_ACTIVITY_NEW_TASK.

Przypadki użycia Tryb uruchamiania Wiele instancji? Komentarze
Zwykłe uruchamianie większości aktywności "standard" Tak Domyślne. System zawsze tworzy nową instancję aktywności w zadaniu docelowym i kieruje do niej intencję.
"singleTop" warunkowo, Jeśli instancja aktywności istnieje już na początku zadania docelowego, system kieruje do niej intencję, wywołując jej metodę onNewIntent(), zamiast tworzyć nową instancję aktywności.
Wersje specjalne
(niezalecane do ogólnego użytku)
"singleTask" warunkowo, System utworzy aktywność w katalogu głównym nowego zadania lub znajdzie ją w istniejącym zadaniu o takim samym podobieństwie. Jeśli wystąpienie aktywności już istnieje i znajduje się u podstawy zadania, system kieruje intencję do istniejącego wystąpienia przez wywołanie jego metody onNewIntent(), zamiast tworzyć nowe wystąpienie.
"singleInstance" Nie Podobnie jak "singleTask", z tym wyjątkiem, że system nie uruchamia żadnych innych aktywności w zadaniu zawierającym instancję. Działanie jest zawsze jedynym elementem zadania.
"singleInstancePerTask" warunkowo, Aktywność może być uruchomiona tylko jako aktywność główna zadania, czyli pierwsza aktywność, która utworzyła zadanie. Dlatego w zadaniu jest tylko jedno wystąpienie tej aktywności. Może ona jednak być wielokrotnie instancjonowana w różnych zadaniach.

Jak widać w tabeli powyżej, "standard" to tryb domyślny, który sprawdza się w przypadku większości rodzajów aktywności. "singleTop" jest też powszechnym i przydatnym trybem uruchamiania w przypadku wielu rodzajów aktywności. Pozostałe tryby, "singleTask", "singleInstance""singleInstancePerTask", nie są odpowiednie w większości zastosowań. W rezultacie powstaje model interakcji, który prawdopodobnie będzie nieznany użytkownikom i bardzo różny od większości innych aplikacji.

Niezależnie od wybranego trybu uruchamiania przetestuj użyteczność aktywności podczas uruchamiania i podczas powrotu do niej z innych aktywności i zadań za pomocą przycisku Wstecz.

Więcej informacji o trybach uruchamiania i ich interakcji z Intentflagami znajdziesz w artykule Zadania i stos wsteczny.

android:lockTaskMode
Określa, jak system prezentuje tę aktywność, gdy urządzenie działa w trybie blokowania zadań.

Android może wykonywać zadania w trybie imersji, podobnym do trybu kiosku, zwanym trybem zablokowanych zadań. Gdy system działa w trybie blokowania zadań, użytkownicy urządzenia zwykle nie mogą wyświetlać powiadomień, uzyskiwać dostępu do aplikacji, których nie ma na liście dozwolonych, ani wracać do ekranu głównego, chyba że aplikacja Home jest na liście dozwolonych.

Gdy system jest w trybie blokowania zadań, mogą działać tylko aplikacje, które zostały dodane do listy dozwolonych przez kontroler zasad dotyczących urządzeń (DPC). Aplikacje systemowe i z podwyższonymi uprawnieniami mogą jednak działać w trybie blokowania zadań bez dodawania ich do listy dozwolonych.

Wartość może być jednym z tych ciągów znaków:R.attr.lockTaskMode

Wartość Opis
"normal" Wartość domyślna. Jest to wartość domyślna. Zadania nie są uruchamiane w trybie blokowania zadań, ale można je tam umieścić, wywołując startLockTask().
"never"

Zadania nie są uruchamiane w trybie lockTask, a użytkownik urządzenia nie może przypinać tych zadań z ekranu Ostatnie.

Uwaga: ten tryb jest dostępny tylko dla aplikacji systemowych i uprzywilejowanych. Aplikacje bez uprawnień z tą wartością są traktowane jako normal.

"if_whitelisted" Jeśli DPC autoryzuje ten pakiet za pomocą DevicePolicyManager.setLockTaskPackages(), ten tryb jest identyczny z always, z tym wyjątkiem, że działanie musi wywołać stopLockTask(), zanim będzie można je zakończyć, jeśli jest to ostatnie zablokowane zadanie. Jeśli DPC nie autoryzuje tego pakietu, ten tryb jest identyczny z trybem normal.
"always"

Zadania zakorzenione w tej aktywności zawsze uruchamiają się w trybie blokowania zadania. Jeśli system jest już w trybie blokowania zadań, gdy to zadanie jest uruchamiane, nowe zadanie jest uruchamiane na bieżącym zadaniu. Zadania uruchomione w tym trybie blokowania zadań mogą z niego wyjść, wywołując funkcję finish().

Uwaga: ten tryb jest dostępny tylko dla aplikacji systemowych i uprzywilejowanych. Aplikacje bez uprawnień z tą wartością są traktowane jako normal.

Ten atrybut został wprowadzony na poziomie API 23.

android:maxRecents
Maksymalna liczba zadań zakorzenionych w tym działaniu na ekranie ostatnich aplikacji. Gdy osiągniesz tę liczbę, system usunie z ekranu Ostatnie najrzadziej używaną instancję. Prawidłowe wartości to liczby całkowite od 1 do 50 lub od 1 do 25 na urządzeniach z małą ilością pamięci. Zero jest nieprawidłowe. Wartością domyślną jest 16.
android:maxAspectRatio

Maksymalny obsługiwany przez aktywność współczynnik proporcji.

Jeśli aplikacja jest uruchamiana na urządzeniu o szerszym formacie obrazu, system automatycznie dodaje do niej czarne pasy u góry i u dołu, pozostawiając niewykorzystane części ekranu, aby aplikacja mogła działać w określonym maksymalnym formacie obrazu.

Maksymalny współczynnik proporcji jest wyrażony w postaci dziesiętnej ilorazu dłuższego i krótszego wymiaru urządzenia. Jeśli na przykład maksymalny współczynnik proporcji to 7:3, ustaw wartość tego atrybutu na 2,33.

Na urządzeniach innych niż urządzenia do noszenia wartość tego atrybutu musi wynosić co najmniej 1, 33. W przypadku urządzeń do noszenia musi to być 1.0 lub więcej. W przeciwnym razie system zignoruje ustawioną wartość.

Więcej informacji o tym atrybucie znajdziesz w artykule R.attr.maxAspectRatio.

android:minAspectRatio

Minimalny współczynnik proporcji obsługiwany przez aktywność.

Jeśli aplikacja jest uruchamiana na urządzeniu o węższym współczynniku proporcji, system automatycznie dodaje do niej czarne pasy, pozostawiając niewykorzystane części ekranu, aby aplikacja mogła działać przy określonym minimalnym współczynniku proporcji.

Minimalny współczynnik proporcji jest wyrażony w postaci dziesiętnej ilorazu dłuższego i krótszego boku urządzenia. Jeśli na przykład współczynnik proporcji wyświetlania wynosi 4:3, ustaw minimalną wartość współczynnika proporcji na 1, 33.

Wartość musi być większa lub równa 1, 0.W przeciwnym razie system zignoruje ustawioną wartość.

Więcej informacji o tym atrybucie znajdziesz w artykule R.attr.minAspectRatio.

android:multiprocess
Określa, czy instancję aktywności można uruchomić w procesie komponentu, który ją uruchomił. Wpisz "true", jeśli jest to możliwe, a "false", jeśli nie. Wartością domyślną jest "false".

Zwykle nowa instancja aktywności jest uruchamiana w procesie aplikacji, która ją zdefiniowała, więc wszystkie instancje aktywności działają w tym samym procesie. Jeśli jednak ta flaga ma wartość "true", instancje aktywności mogą działać w wielu procesach, co pozwala systemowi tworzyć instancje wszędzie tam, gdzie są używane, pod warunkiem że zezwalają na to uprawnienia – jest to prawie nigdy niepotrzebne ani pożądane.

android:name
Nazwa klasy, która implementuje aktywność, podklasa Activity. Wartość atrybutu to zwykle pełna i jednoznaczna nazwa klasy, np. "com.example.project.ExtracurricularActivity". Jeśli jednak pierwszy znak nazwy to kropka, np. ".ExtracurricularActivity", jest ona dołączana do przestrzeni nazw określonej w pliku build.gradle.

Po opublikowaniu aplikacji nie zmieniaj tej nazwy, chyba że ustawisz android:exported="false". Nie ma wartości domyślnej. Musisz podać nazwę.

android:noHistory
Czy aktywność jest usuwana ze stosu aktywności i kończona przez wywołanie jej metody finish(), gdy użytkownik przechodzi do innej aktywności i nie jest ona już widoczna na ekranie. Wpisz "true", jeśli jest gotowy, a "false", jeśli nie. Wartością domyślną jest "false".

Wartość "true" oznacza, że aktywność nie pozostawia śladu w historii. Nie pozostaje ona w stosie działań zadania, więc użytkownik nie może do niej wrócić. W takim przypadku funkcja onActivityResult() nigdy nie jest wywoływana, jeśli rozpoczniesz inną aktywność w celu uzyskania wyniku z tej aktywności.

Ten atrybut został wprowadzony na poziomie API 3.

android:parentActivityName
Nazwa klasy logicznego elementu nadrzędnego aktywności. Nazwa musi być zgodna z nazwą klasy podaną w atrybucie android:name odpowiedniego elementu <activity>.

System odczytuje ten atrybut, aby określić, które działanie ma się rozpocząć, gdy użytkownik kliknie przycisk Wstecz na pasku działań. System może też używać tych informacji do syntetyzowania stosu wstecznego aktywności z TaskStackBuilder.

Aby obsługiwać poziomy interfejsu API 4–16, możesz też zadeklarować aktywność nadrzędną za pomocą elementu <meta-data>, który określa wartość atrybutu "android.support.PARENT_ACTIVITY":

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

Więcej informacji o deklarowaniu aktywności nadrzędnej na potrzeby nawigacji „Wstecz” znajdziesz w artykule Zapewnianie nawigacji „Wstecz”.

Ten atrybut został wprowadzony na poziomie API 16.

android:persistableMode

Określa, jak instancja aktywności jest zachowywana w zawierającym ją zadaniu po ponownym uruchomieniu urządzenia.

Jeśli aktywność główna zadania ustawi wartość tego atrybutu na persistRootOnly, zachowana zostanie tylko aktywność główna. W przeciwnym razie sprawdzane są aktywności znajdujące się wyżej w stosie wstecznym zadania. Zachowywane są te aktywności, które ustawiają wartość tego atrybutu na persistAcrossReboots.

Jeśli używasz tego atrybutu, musisz ustawić jego wartość na jedną z tych:

Wartość Opis
persistRootOnly

Wartość domyślna. Po ponownym uruchomieniu systemu zadanie aktywności jest zachowywane, ale używany jest tylko zamiar uruchomienia aktywności głównej.

Gdy intencja uruchomienia aplikacji wczytuje jej aktywność główną, aktywność nie otrzymuje obiektu PersistableBundle. Dlatego nie używaj onSaveInstanceState(), aby zachować stan głównej aktywności aplikacji po ponownym uruchomieniu urządzenia.

Uwaga: wartość tego atrybutu wpływa na działanie aplikacji tylko wtedy, gdy jest ustawiona w jej głównym działaniu.

persistAcrossReboots

Stan tego działania jest zachowywany wraz ze stanem każdego działania wyżej w stosie wstecznym, którego atrybut persistableMode ma wartość persistAcrossReboots. Jeśli aktywność nie ma atrybutu persistableMode ustawionego na persistAcrossReboots lub jest uruchamiana za pomocą flagi Intent.FLAG_ACTIVITY_NEW_DOCUMENT, ta aktywność i wszystkie aktywności wyżej w stosie wstecznym nie są zachowywane.

Gdy intencja wczytuje aktywność, której atrybut persistableMode w aplikacji ma wartość persistAcrossReboots, aktywność otrzymuje obiekt PersistableBundle w metodzie onCreate(). Dlatego możesz używać onSaveInstanceState() , aby zachować stan aktywności po ponownym uruchomieniu urządzenia, o ile atrybut persistableMode ma wartość persistAcrossReboots.

Uwaga: wartość tego atrybutu wpływa na działanie aplikacji, nawet jeśli jest ustawiona w przypadku aktywności innej niż aktywność główna aplikacji.

persistNever

Stan aktywności nie jest zachowywany.

Uwaga: wartość tego atrybutu wpływa na działanie aplikacji tylko wtedy, gdy jest ustawiona w jej głównym działaniu.

Ten atrybut został wprowadzony na poziomie API 21.

android:permission
Nazwa uprawnienia, które klienci muszą mieć, aby uruchomić działanie lub w inny sposób uzyskać odpowiedź na intencję. Jeśli wywołujący startActivity() lub startActivityForResult() nie ma określonych uprawnień, jego intencja nie jest przekazywana do działania.

Jeśli ten atrybut nie jest ustawiony, do aktywności stosowany jest zbiór uprawnień określony przez atrybut <application> elementu permission. Jeśli żaden z tych atrybutów nie jest ustawiony, aktywność nie jest chroniona przez uprawnienia.

Więcej informacji o uprawnieniach znajdziesz w sekcji Uprawnienia w artykule Omówienie pliku manifestu aplikacji oraz w wskazówkach dotyczących bezpieczeństwa.

android:preferMinimalPostProcessing

Określa, czy aktywność preferuje, aby podłączony wyświetlacz wykonywał minimalne przetwarzanie końcowe (znane również jako automatyczny tryb niskiego opóźnienia lub tryb gry). To ustawienie jest przydatne w przypadku aplikacji takich jak gry czy rozmowy wideo, w których niskie opóźnienie jest ważniejsze niż poprawa jakości obrazu.

Wartością domyślną jest "false".

Więcej informacji znajdziesz w przewodniku na temat sprawdzania, czy urządzenie obsługuje małe opóźnienia, i wysyłania prośby o taką obsługę.

android:process

Nazwa procesu, w którym działa aktywność. Zwykle wszystkie komponenty aplikacji działają w domyślnej nazwie procesu utworzonej dla aplikacji i nie musisz używać tego atrybutu. W razie potrzeby możesz jednak zastąpić domyślną nazwę procesu tym atrybutem, co pozwoli Ci rozłożyć komponenty aplikacji na kilka procesów.

Jeśli nazwa przypisana do tego atrybutu zaczyna się od dwukropka (:), w razie potrzeby tworzony jest nowy proces prywatny dla aplikacji, w którym działa aktywność.

Jeśli nazwa procesu zaczyna się od małej litery, aktywność jest uruchamiana w globalnym procesie o tej nazwie, pod warunkiem że ma do tego uprawnienia. Dzięki temu komponenty w różnych aplikacjach mogą współdzielić proces, co zmniejsza zużycie zasobów.

Atrybut process elementu <application> process może ustawić inną domyślną nazwę procesu dla wszystkich komponentów.

android:recreateOnConfigChanges

Określa zmiany konfiguracji, które powinny spowodować ponowne utworzenie aktywności przez system. Jeśli zmiana konfiguracji jest określona tutaj (a nie w android:configChanges), aktywność zostanie ponownie utworzona, gdy ta zmiana nastąpi.

Więcej informacji znajdziesz w przewodniku na temat ponownego tworzenia aktywności po zmianach konfiguracji.

android:relinquishTaskIdentity

Określa, czy aktywność przekazuje identyfikatory zadań aktywności znajdującej się nad nią w stosie zadań. Zadanie, którego aktywność główna ma ten atrybut ustawiony na "true", zastępuje podstawowy Intent aktywnością następną w zadaniu.

Jeśli następna aktywność ma też ustawiony ten atrybut na "true", przekazuje podstawowy Intent do każdej aktywności, którą uruchamia w tym samym zadaniu. Ten proces będzie powtarzany dla każdej aktywności, dopóki nie zostanie napotkana aktywność, w której ten atrybut ma wartość "false". Wartością domyślną jest "false".

Ten atrybut ustawiony na "true" umożliwia też aktywności korzystanie z ActivityManager.TaskDescription w celu zmiany etykiet, kolorów i ikon na ekranie ostatnich aplikacji.

android:requireContentUriPermissionFromCaller

Określa uprawnienia niezbędne do uruchomienia tej aktywności podczas przekazywania identyfikatorów URI treści. Wartość domyślna to none, co oznacza, że nie są wymagane żadne specjalne uprawnienia. Ustawienie tego atrybutu ogranicza wywoływanie działania na podstawie uprawnień wywołującego. Jeśli osoba wywołująca nie ma wymaganych uprawnień, rozpoczęcie aktywności zostanie odrzucone za pomocą kodu SecurityException .

Pamiętaj, że egzekwowanie działa w przypadku identyfikatorów URI treści w elementach Intent.getData(), Intent.EXTRA_STREAM, i Intent.getClipData().

Może to być wartość ciągu znaków, w którym znaki takie jak „\\n” lub „\\uxxxx” (znak Unicode) są poprzedzone znakiem zmiany znaczenia „\\”;

Musi to być jedna z tych stałych wartości.

Stała Wartość Opis
brak 0 Domyślne, nie są wymagane żadne specjalne uprawnienia.
odczyt 1 Wymaga, aby wywołujący miał dostęp do odczytu przekazanych identyfikatorów URI treści.
readAndWrite 4 Wymaga, aby wywołujący miał uprawnienia do odczytu i zapisu przekazanych identyfikatorów URI treści.
readOrWrite 3 Wymaga, aby wywołujący miał uprawnienia do odczytu lub zapisu przekazanych identyfikatorów URI treści.
zapis 2 Wymaga, aby wywołujący miał uprawnienia do zapisu w przypadku przekazanych identyfikatorów URI treści.
android:resizeableActivity

Określa, czy aplikacja obsługuje tryb wielu okien.

Możesz ustawić ten atrybut w elemencie <activity> lub <application>.

Jeśli ustawisz ten atrybut na "true", użytkownik będzie mógł uruchomić aktywność w trybie podzielonego ekranu i trybie dowolnym. Jeśli ustawisz atrybut na "false", aplikacji nie będzie można testować ani optymalizować pod kątem środowiska z wieloma oknami. System może nadal umieścić aktywność w trybie wielu okien z zastosowanym trybem zgodności.

Ustawienie tego atrybutu na "false" nie gwarantuje, że na ekranie nie będą widoczne inne aplikacje w trybie wielu okien, np. w trybie obrazu w obrazie lub na innych wyświetlaczach. Ustawienie tej flagi nie oznacza, że Twoja aplikacja ma wyłączny dostęp do zasobów.

Jeśli Twoja aplikacja jest kierowana na poziom interfejsu API 24 lub wyższy i nie podasz wartości tego atrybutu, domyślnie będzie on miał wartość "true".

Jeśli aplikacja jest kierowana na interfejs API na poziomie 31 lub wyższym, ten atrybut działa inaczej na małych i dużych ekranach:

  • Duże ekrany (sw >= 600 dp): wszystkie aplikacje obsługują tryb wielu okien. Atrybut wskazuje, czy rozmiar aplikacji można zmienić, a nie czy obsługuje ona tryb wielu okien. Jeśli resizeableActivity="false", aplikacja jest w razie potrzeby przełączana w tryb zgodności, aby dostosować się do wymiarów wyświetlacza.
  • Małe ekrany (sw < 600 dp): jeśli resizeableActivity="true" oraz minimalna szerokość i minimalna wysokość aktywności spełniają wymagania dotyczące trybu wielu okien, aplikacja obsługuje ten tryb. Jeśli resizeableActivity="false", aplikacja nie obsługuje trybu wielu okien niezależnie od minimalnej szerokości i wysokości aktywności.

Wartość działania głównego zadania jest stosowana do wszystkich dodatkowych działań uruchamianych w ramach tego zadania. Oznacza to, że jeśli aktywność główna zadania ma możliwość zmiany rozmiaru, system traktuje wszystkie inne aktywności w tym zadaniu jako takie, które też mają taką możliwość. Jeśli aktywność główna nie może zmieniać rozmiaru, inne aktywności w zadaniu też nie mogą.

Uwaga: wartość aktywności głównej zadania jest stosowana do wszystkich dodatkowych aktywności uruchomionych w ramach tego zadania. Oznacza to, że jeśli aktywność główna zadania ma możliwość zmiany rozmiaru, system traktuje wszystkie inne aktywności w tym zadaniu jako mające możliwość zmiany rozmiaru. Jeśli aktywność główna nie ma możliwości zmiany rozmiaru, inne aktywności w zadaniu również nie mają takiej możliwości.

android:screenOrientation

Żądana orientacja aktywności.

Gdy aktywność zajmuje cały ekran, żądana orientacja jest sugestią zmiany orientacji na tym ekranie na żądaną wartość. Może to spowodować, że orientacja będzie inna niż fizyczna orientacja ekranu w przestrzeni, co wymaga obrócenia urządzenia przez użytkownika, aby mógł dalej korzystać z aplikacji. Na Androidzie 12 (API na poziomie 31) i nowszych producenci urządzeń mogą skonfigurować poszczególne ekrany urządzeń (np. ekran tabletu w urządzeniu składanym) tak, aby ignorowały tę sugestię i zamiast tego wymuszały wyświetlanie aktywności w formacie letterbox w preferowanej przez użytkownika orientacji urządzenia. Dzięki temu orientacja aktywności będzie zgodna z wymaganą bez konieczności fizycznego obracania urządzenia przez użytkownika.

W trybie wielu okien żądana orientacja nie jest sugestią dotyczącą ogólnej orientacji. Jeśli aktywność jest w formacie letterbox, żądana orientacja wpływa na zastosowany format letterbox.

Wartość może być jednym z tych ciągów:

"unspecified" Wartość domyślna. System wybiera orientację. Zasady, których używa, a co za tym idzie wybory dokonywane w określonych kontekstach, mogą się różnić w zależności od urządzenia.
"behind" taką samą orientację jak aktywność, która znajduje się bezpośrednio pod nią w stosie działań;
"landscape" Orientacja pozioma (wyświetlacz jest szerszy niż wyższy).
"portrait" Orientacja pionowa (wyświetlacz jest wyższy niż szerszy).
"reverseLandscape" Orientacja pozioma w przeciwnym kierunku niż normalna orientacja pozioma. Dodano na poziomie API 9.
"reversePortrait" Orientacja pionowa w przeciwnym kierunku niż normalna orientacja pionowa. Dodano na poziomie API 9.
"sensorLandscape" Orientacja pozioma, ale może być normalna lub odwrócona w zależności od czujnika urządzenia. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obracanie oparte na czujniku. Dodano na poziomie API 9.
"sensorPortrait" Orientacja pionowa, ale może być normalna lub odwrócona w zależności od czujnika urządzenia. Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obracanie oparte na czujniku. Jednak w zależności od konfiguracji urządzenia obracanie o 180 stopni może być niedozwolone. Dodano na poziomie API 9.
"userLandscape" Orientacja pozioma, ale może być normalna lub odwrócona w zależności od czujnika urządzenia i preferencji użytkownika. Dodano na poziomie API 18.
"userPortrait" Orientacja pionowa, ale może być normalna lub odwrócona w zależności od czujnika urządzenia i preferencji użytkownika. Jednak w zależności od konfiguracji urządzenia obracanie o 180 stopni może być niedozwolone. Dodano na poziomie API 18.
"sensor" Orientację określa czujnik orientacji urządzenia. Orientacja wyświetlacza zależy od tego, jak użytkownik trzyma urządzenie. Zmienia się, gdy użytkownik obraca urządzenie. Niektóre urządzenia nie obracają się domyślnie we wszystkich 4 kierunkach. Aby używać wszystkich 4 orientacji, użyj funkcji "fullSensor". Czujnik jest używany nawet wtedy, gdy użytkownik zablokował obracanie ekranu na podstawie danych z czujnika.
"fullSensor" Czujnik orientacji urządzenia określa orientację w każdym z 4 położeń. Jest to podobne do "sensor", z tym że umożliwia korzystanie z dowolnej z 4 możliwych orientacji ekranu, niezależnie od tego, co urządzenie zwykle obsługuje. Na przykład niektóre urządzenia nie używają zwykle orientacji pionowej ani poziomej odwróconej, ale ta opcja je włącza. Dodano na poziomie API 9.
"nosensor" Orientacja jest określana bez odniesienia do fizycznego czujnika orientacji. Czujnik jest ignorowany, więc wyświetlacz nie obraca się w zależności od tego, jak użytkownik porusza urządzeniem.
"user" Obecna preferowana orientacja użytkownika.
"fullUser" Jeśli użytkownik zablokował obracanie ekranu na podstawie danych z czujnika, to ustawienie działa tak samo jak user. W przeciwnym razie działa tak samo jak fullSensor i umożliwia korzystanie z dowolnej z 4 możliwych orientacji ekranu. Dodano na poziomie API 18.
"locked" Blokuje orientację w bieżącym położeniu, niezależnie od tego, jakie ono jest. Dodano w interfejsie API na poziomie 18.

Uwaga: gdy zadeklarujesz jedną z wartości landscape lub portrait, będzie to traktowane jako bezwzględny wymóg dotyczący orientacji, w której działa aktywność. Zadeklarowana wartość umożliwia filtrowanie według usług takich jak Google Play, dzięki czemu aplikacja jest dostępna tylko na urządzeniach, które obsługują orientację wymaganą przez Twoje działania. Jeśli na przykład zadeklarujesz "landscape", "reverseLandscape" lub "sensorLandscape", Twoja aplikacja będzie dostępna tylko na urządzeniach obsługujących orientację poziomą.

Musisz też wyraźnie zadeklarować, że Twoja aplikacja wymaga orientacji pionowej lub poziomej, używając elementu <uses-feature>, np. <uses-feature android:name="android.hardware.screen.portrait"/>. Jest to mechanizm filtrowania zapewniany przez Google Play i inne usługi, które go obsługują. Sama platforma nie kontroluje, czy aplikacja może zostać zainstalowana, gdy urządzenie obsługuje tylko określone orientacje.

android:showForAllUsers

Określa, czy aktywność jest wyświetlana, gdy bieżący użytkownik urządzenia jest inny niż użytkownik, który ją uruchomił. Możesz ustawić ten atrybut na wartość literału, np. "true" lub "false", albo na atrybut zasobu lub motywu, który zawiera wartość logiczną.

Ten atrybut został dodany na poziomie interfejsu API 23.

android:stateNotNeeded
Czy aktywność można zakończyć i ponownie uruchomić bez zapisywania jej stanu. Jest to "true", jeśli można go ponownie uruchomić bez odwoływania się do poprzedniego stanu, i "false", jeśli poprzedni stan jest wymagany. Wartością domyślną jest "false".

Zwykle przed tymczasowym wyłączeniem aktywności w celu zaoszczędzenia zasobów wywoływana jest jej metoda onSaveInstanceState(). Ta metoda zapisuje bieżący stan aktywności w obiekcie Bundle, który jest następnie przekazywany do onCreate() po ponownym uruchomieniu aktywności. Jeśli ten atrybut ma wartość "true", funkcja onSaveInstanceState() może nie zostać wywołana, a zamiast Bundle przekazywana jest wartość onCreate(), tak jak w przypadku pierwszego uruchomienia aktywności.null

Ustawienie "true" oznacza, że aktywność można ponownie uruchomić bez zachowania stanu. Na przykład aktywność, która wyświetla ekran główny, używa tego ustawienia, aby mieć pewność, że nie zostanie usunięta, jeśli z jakiegoś powodu ulegnie awarii.

android:supportsPictureInPicture

Określa, czy aktywność obsługuje wyświetlanie obrazu w obrazie.

android:taskAffinity

Zadanie, z którym jest powiązana aktywność. Działania o tym samym podobieństwie koncepcyjnym należą do tego samego zadania, do tej samej „aplikacji” z perspektywy użytkownika. Powiązanie zadania jest określane przez powiązanie jego głównej aktywności.

Powiązanie określa 2 rzeczy: zadanie, do którego ponownie przypisywana jest aktywność (patrz atrybut allowTaskReparenting), oraz zadanie, w którym znajduje się aktywność, gdy jest uruchamiana z flagą FLAG_ACTIVITY_NEW_TASK.

Domyślnie wszystkie działania w aplikacji mają tę samą przynależność. Możesz ustawić ten atrybut, aby inaczej je pogrupować, a nawet umieścić działania zdefiniowane w różnych aplikacjach w tym samym zadaniu. Aby określić, że aktywność nie jest powiązana z żadnym zadaniem, ustaw ją na pusty ciąg znaków.

Jeśli ten atrybut nie jest ustawiony, aktywność dziedziczy powiązanie ustawione dla aplikacji. Zobacz atrybut <application> elementu taskAffinity. Nazwa domyślnego powiązania aplikacji to przestrzeń nazw ustawiona w pliku build.gradle.

android:theme
Odwołanie do zasobu stylu określającego ogólny motyw aktywności. Automatycznie ustawia to kontekst aktywności, aby używać tego theme, a także może powodować animacje „rozpoczynania” przed uruchomieniem aktywności, aby lepiej pasować do tego, jak aktywność faktycznie wygląda.

Jeśli ten atrybut nie jest ustawiony, aktywność dziedziczy motyw ustawiony dla całej aplikacji z atrybutu theme elementu <application>. Jeśli ten atrybut też nie jest ustawiony, używany jest domyślny motyw systemowy. Więcej informacji znajdziesz w artykule Style i motywy.

android:uiOptions

Dodatkowe opcje interfejsu aktywności. Musi to być jedna z tych wartości:

WartośćOpis
"none"Brak dodatkowych opcji interfejsu. Jest to ustawienie domyślne.
"splitActionBarWhenNarrow"Dodaje pasek u dołu ekranu, na którym wyświetlane są elementy działania na pasku aplikacji, zwanym też paskiem działań, gdy brakuje miejsca w poziomie, np. w trybie pionowym na telefonie. Zamiast niewielkiej liczby elementów działania wyświetlanych na pasku aplikacji u góry ekranu pasek aplikacji jest podzielony na sekcję nawigacji u góry i pasek u dołu z elementami działania. Oznacza to, że odpowiednia ilość miejsca jest dostępna nie tylko na elementy działania, ale także na elementy nawigacyjne i tytułowe u góry. Pozycje menu nie są podzielone na 2 paski. Zawsze pojawiają się razem.

Więcej informacji o pasku aplikacji znajdziesz w artykule Dodawanie paska aplikacji.

Ten atrybut został dodany na poziomie interfejsu API 14.

android:windowSoftInputMode
Sposób interakcji głównego okna aktywności z oknem zawierającym ekranową klawiaturę programową. Ustawienie tego atrybutu wpływa na 2 rzeczy:
  • Określa, czy klawiatura ekranowa jest ukryta czy widoczna, gdy aktywność staje się obiektem uwagi użytkownika.
  • Czy główne okno aktywności jest zmniejszane, aby zrobić miejsce na klawiaturę ekranową, czy też jego zawartość jest przesuwana, aby bieżący fokus był widoczny, gdy część okna jest zasłonięta przez klawiaturę ekranową.

Ustawienie musi mieć jedną z wartości podanych w tabeli poniżej lub kombinację jednej wartości "state..." i jednej wartości "adjust...". Ustawienie wielu wartości w dowolnej grupie, np. wielu wartości "state...", daje nieokreślone wyniki. Poszczególne wartości są rozdzielane kreską pionową (|), jak w tym przykładzie:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

Wartości ustawione tutaj (inne niż "stateUnspecified""adjustUnspecified") zastępują wartości ustawione w motywie.

Wartość Opis
"stateUnspecified" Nie określono, czy klawiatura ekranowa jest ukryta czy widoczna. System wybiera odpowiedni stan lub korzysta z ustawienia w motywie.

Jest to domyślne ustawienie działania klawiatury ekranowej.

"stateUnchanged" Klawiatura ekranowa jest przywracana do stanu, w jakim była ostatnio (widoczna lub ukryta), gdy aplikacja przechodzi na pierwszy plan.
"stateHidden" Klawiatura ekranowa jest ukrywana, gdy użytkownik wybierze aktywność, czyli gdy przejdzie do niej, a nie gdy wróci do niej po opuszczeniu innej aktywności.
"stateAlwaysHidden" Klawiatura ekranowa jest zawsze ukryta, gdy okno główne aktywności ma fokus wejściowy.
"stateVisible" Klawiatura ekranowa jest widoczna, gdy użytkownik wybierze aktywność, czyli gdy aktywnie przejdzie do niej, a nie gdy wróci do niej po opuszczeniu innej aktywności.
"stateAlwaysVisible" Klawiatura ekranowa jest widoczna, gdy okno otrzymuje zaznaczenie do wprowadzania danych.
"adjustUnspecified" Nie określono, czy główne okno aktywności zmieni rozmiar, aby zrobić miejsce na klawiaturę ekranową, czy też zawartość okna przesunie się, aby bieżący fokus był widoczny na ekranie. System automatycznie wybiera jeden z tych trybów w zależności od tego, czy w oknie znajdują się widoki układu, które mogą przewijać swoją zawartość. Jeśli taki widok istnieje, okno zmienia rozmiar, zakładając, że przewijanie może sprawić, że cała zawartość okna będzie widoczna na mniejszym obszarze.

Jest to domyślne ustawienie działania głównego okna.

"adjustResize" Główne okno aktywności jest zawsze zmieniane, aby zrobić miejsce na klawiaturę ekranową.
"adjustPan" Główne okno aktywności nie jest zmieniane, aby zrobić miejsce na klawiaturę ekranową. Zawartość okna automatycznie przesuwa się tak, aby bieżący fokus nigdy nie był zasłonięty przez klawiaturę, a użytkownicy zawsze widzieli, co piszą. Jest to zwykle mniej pożądane niż zmiana rozmiaru, ponieważ użytkownik może musieć zamknąć klawiaturę ekranową, aby uzyskać dostęp do zasłoniętych części okna i z nimi wejść w interakcję.
"adjustNothing" Główne okno aktywności nie jest zmieniane ani przesuwane, aby zrobić miejsce na klawiaturę ekranową. Aktywność odpowiada za zrobienie miejsca na klawiaturę ekranową za pomocą wstawień okna. W przypadku aktywności, które prawidłowo obsługują wstawki okna, zapewnia to największą kontrolę nad sposobem wyświetlania zawartości okna na ekranie.

Ten atrybut został wprowadzony na poziomie API 3.

wprowadzony w:
Poziom interfejsu API 1 dla wszystkich atrybutów z wyjątkiemnoHistorywindowSoftInputMode, które zostały dodane na poziomie interfejsu API 3.
Zobacz też:
<application>
<activity-alias>