<Odbiorca>

składnia:
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    ...
</receiver>
zawiera się w:
<application>
może zawierać:
<intent-filter>
<meta-data>
<property>
opis:
Deklaruje odbiornik transmisji, podklasę BroadcastReceiver, jako jeden z komponentów aplikacji. Odbiorniki transmisji umożliwiają aplikacjom odbieranie intencji, które są transmitowane przez system lub inne aplikacje, nawet gdy inne komponenty aplikacji nie działają.

Istnieją 2 sposoby, aby odbiornik transmisji był znany systemowi. Pierwszy to zadeklarowanie go w pliku manifestu za pomocą tego elementu. Drugi to dynamiczne utworzenie odbiornika w kodzie i zarejestrowanie go za pomocą metody Context.registerReceiver() lub jednej z jej przeciążonych wersji.

Więcej informacji o dynamicznym tworzeniu odbiorników znajdziesz w opisie klasy BroadcastReceiver.

Jeśli ten odbiornik obsługuje transmisje inne niż systemowe, określ wartość atrybutu android:exported. Ustaw tę wartość na "true", jeśli chcesz, aby odbiornik mógł odbierać transmisje z innych aplikacji, lub na "false", jeśli chcesz, aby odbiornik mógł odbierać transmisje tylko z Twojej aplikacji.

Jeśli atrybut android:permission został już zadeklarowany, nie musisz go usuwać.

Ostrzeżenie: ogranicz liczbę odbiorników transmisji ustawionych w aplikacji. Zbyt duża liczba odbiorników transmisji może wpłynąć na wydajność aplikacji i czas pracy baterii urządzeń użytkowników. Więcej informacji o interfejsach API, których możesz używać zamiast klasy BroadcastReceiver do planowania pracy w tle, znajdziesz w artykule Optymalizacja działania w tle.

atrybuty:
android:directBootAware

Określa, czy odbiornik transmisji jest świadomy bezpośredniego uruchamiania, to znaczy, czy może działać, zanim użytkownik odblokuje urządzenie.

Uwaga: Podczas bezpośredniego uruchamiania odbiornik transmisji w aplikacji może uzyskiwać dostęp tylko do danych przechowywanych w pamięci chronionej urządzenia.

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

android:enabled
Określa, czy system może utworzyć instancję odbiornika transmisji. Wartość "true" oznacza, że może, a "false" – że nie może. Wartością domyślną jest "true".

Element <application> ma własny enabled atrybut, który dotyczy wszystkich komponentów aplikacji, w tym odbiorników transmisji. Aby odbiornik transmisji był włączony, atrybuty <application> i <receiver> muszą mieć wartość "true". Jeśli którykolwiek z nich ma wartość "false", odbiornik jest wyłączony i nie można utworzyć jego instancji.

android:exported
Określa, czy odbiornik transmisji może odbierać wiadomości ze źródeł innych niż systemowe spoza aplikacji. Wartość "true" oznacza, że może, a "false" – że nie może. Jeśli wartość to "false", odbiornik transmisji odbiera tylko wiadomości wysyłane przez system, komponenty tej samej aplikacji lub aplikacje o tym samym identyfikatorze użytkownika.

Jeśli nie określono wartości, wartość domyślna zależy od tego, czy odbiornik transmisji zawiera filtry intencji. Jeśli odbiornik zawiera co najmniej 1 filtr intencji, wartością domyślną jest "true". W przeciwnym razie wartością domyślną jest "false".

Ten atrybut nie jest jedynym sposobem na ograniczenie zewnętrznego dostępu do odbiornika transmisji. Możesz też użyć uprawnienia, aby ograniczyć zewnętrzne podmioty, które mogą wysyłać do niego wiadomości. Zobacz atrybut permission.

android:icon
Ikona reprezentująca odbiornik transmisji. Ten atrybut jest ustawiany jako odniesienie do zasobu rysowalnego zawierającego definicję obrazu. Jeśli nie jest ustawiony, używana jest ikona określona dla całej aplikacji. Zobacz atrybut icon elementu <application>.

Ikona odbiornika transmisji, niezależnie od tego, czy jest ustawiona tutaj, czy przez element <application>, jest też domyślną ikoną wszystkich filtrów intencji odbiornika. Zobacz atrybut icon elementu <intent-filter>.

android:intentMatchingFlags

Użyj tego atrybutu, aby 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 <receiver> zastępuje wartość ustawioną w tagu <application>.

Wartość musi być jedną lub kilkoma z tych flag rozdzielonych znakiem „|”:

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

Wymusza bardziej rygorystyczne dopasowywanie przychodzących intencji:

  • Jawne intencje muszą pasować do filtra intencji komponentu docelowego.
  • Intencje bez działania nie pasują do żadnego filtra intencji.
allowNullAction

Zmiękcza reguły dopasowywania, aby umożliwić dopasowywanie intencji bez działania. Ta flaga jest używana w połączeniu z enforceIntentFilter, aby uzyskać to działanie:

  • Jawne intencje muszą pasować do filtra intencji komponentu docelowego.
  • Intencje bez działania mogą pasować do dowolnego filtra intencji.

Więcej informacji znajdziesz w sekcji Bezpieczniejsze intencje w artykule Zmiany w działaniu aplikacji na Androida 16 (poziom API 36).

android:label
Etykieta odbiornika transmisji czytelna dla użytkownika. Jeśli ten atrybut nie jest ustawiony, używana jest etykieta ustawiona dla całej aplikacji. Zobacz atrybut label elementu <application>.

Etykieta odbiornika transmisji, niezależnie od tego, czy jest ustawiona tutaj, czy przez element <application>, jest też domyślną etykietą wszystkich filtrów intencji odbiornika. Zobacz atrybut label elementu <intent-filter>.

Etykieta jest ustawiana jako odniesienie do zasobu ciągu znaków, dzięki czemu można ją zlokalizować tak jak inne ciągi znaków w interfejsie użytkownika. Podczas tworzenia aplikacji można ją jednak ustawić jako surowy ciąg znaków.

android:name
Nazwa klasy, która implementuje odbiornik transmisji, podklasa BroadcastReceiver. Jest to pełna nazwa klasy, np. "com.example.project.ReportReceiver". Jeśli jednak, jako skrót, jeśli pierwszy znak nazwy to kropka, np. ".ReportReceiver", jest ona dołączana do nazwy pakietu określonej w elemencie <manifest>.

Po opublikowaniu aplikacji nie zmieniaj tej nazwy, chyba że ustawisz android:exported="false".

Nie ma wartości domyślnej. Należy podać nazwę.

android:permission
Nazwa uprawnienia, którego nadawcy potrzebują, aby wysłać wiadomość do odbiornika transmisji. Jeśli ten atrybut nie jest ustawiony, do odbiornika transmisji stosowane jest uprawnienie ustawione przez <application> elementu permission atrybutu stosuje się Jeśli żaden z tych atrybutów nie jest ustawiony, odbiornik nie jest chroniony przez uprawnienie.

Więcej informacji o uprawnieniach znajdziesz w sekcji Uprawnienia w artykule Omówienie manifestu aplikacji oraz w artykule Wskazówki dotyczące bezpieczeństwa.

android:process

Nazwa procesu, w którym działa odbiornik transmisji. Zwykle wszystkie komponenty aplikacji działają w domyślnym procesie utworzonym dla aplikacji. Ma on taką samą nazwę jak pakiet aplikacji.

Atrybut elementu <application> może ustawić inną wartość domyślną dla wszystkich komponentów.process Każdy komponent może jednak zastąpić wartość domyślną własnym atrybutem process, co pozwala rozdzielić aplikację 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, a odbiornik transmisji działa w tym procesie.

Jeśli nazwa procesu zaczyna się małą literą, odbiornik działa 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.

wprowadzono w:
poziom API 1