<Odbiorca>

składnia:
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    ...
</receiver>
zawarte w:
<application>
może zawierać:
<intent-filter>
<meta-data>
description:
Deklaruje odbiornik (podklasę BroadcastReceiver) jako jeden z komponentów aplikacji. Odbiorniki umożliwiają aplikacjom odbieranie intencji przesyłanych przez system lub inne aplikacje, nawet gdy inne składniki aplikacji nie są uruchomione.

Istnieją 2 sposoby na poinformowanie systemu o odbiorniku. Jednym z nich jest zadeklarowanie tego w pliku manifestu z tym elementem. Drugim jest dynamiczne tworzenie odbiornika w kodzie i rejestrowanie 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 odbiornik obsługuje komunikaty niesystemowe, podaj wartość android:exported. Ustaw tę wartość na "true", jeśli chcesz, by odbiornik mógł odbierać komunikaty z innych aplikacji, lub "false", jeśli chcesz, aby tylko odbiornik mógł odbierać komunikaty z Twojej aplikacji.

Nie musisz usuwać atrybutu android:permission, jeśli został już zadeklarowany.

Ostrzeżenie: ogranicz liczbę odbiorników ustawionych w aplikacji. Zbyt duża liczba odbiorników może mieć wpływ na wydajność aplikacji i czas pracy na 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 o optymalizacji w tle.

atrybuty:
android:directBootAware

Określa, czy odbiornik ma stan bezpośredniego rozruchu, czyli czy może on działać, zanim użytkownik odblokuje urządzenie.

Uwaga: w trakcie rozruchu bezpośredniego odbiornik w aplikacji ma dostęp tylko do danych przechowywanych w pamięci chronionej urządzeniem.

Wartość domyślna to "false".

android:enabled
Czy system może utworzyć instancję odbiornika transmisji. Jeśli może, to "true". Jeśli nie, to "false". Wartością domyślną jest "true".

Element <application> ma własny atrybut enabled, który odnosi się do wszystkich komponentów aplikacji, w tym odbiorników. Aby odbiornik został włączony, atrybuty <application> i <receiver> muszą mieć wartość "true". Jeśli dowolną z tych wartości jest "false", jest wyłączona i nie można utworzyć instancji.

android:exported
Czy odbiornik może odbierać wiadomości ze źródeł innych niż system poza swoją aplikacją. Jeśli można, jest to "true", a jeśli nie, "false". Po ustawieniu "false" odbiornik odbiera tylko wiadomości wysłane przez system, komponenty tej samej aplikacji lub aplikacje o tym samym identyfikatorze użytkownika.

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

Ten atrybut nie jest jedynym sposobem ograniczenia ekspozycji odbiornika na zewnątrz. Możesz też użyć tych uprawnień, aby ograniczyć podmioty zewnętrzne, które mogą wysyłać do niego wiadomości. Zobacz atrybut permission.

android:icon
Ikona odbiornika. Ten atrybut jest ustawiany jako odwołanie do rysowalnego zasobu zawierającego definicję obrazu. Jeśli nie jest ustawiona, używana jest ikona określona dla całej aplikacji. Patrz atrybut icon elementu <application>.

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

android:label
Czytelna dla użytkownika etykieta odbiornika. Jeśli ten atrybut nie zostanie ustawiony, używana będzie etykieta ustawiona dla całej aplikacji. Zobacz atrybut label elementu <application>.

Etykieta odbiornika (ustawiona tutaj lub przez element <application>) jest też domyślną etykietą wszystkich filtrów intencji odbiorcy. Zobacz atrybut label elementu <intent-filter>.

Etykieta jest ustawiona jako odwołanie do zasobu w postaci ciągu znaków, dzięki czemu można ją zlokalizować tak samo jak inne ciągi w interfejsie. Dla wygody podczas programowania aplikacji możesz ją jednak także ustawić jako nieprzetworzony ciąg znaków.

android:name
Nazwa klasy, która implementuje odbiornik, która należy do podklasy BroadcastReceiver. Jest to pełna i jednoznaczna nazwa klasy, na przykład "com.example.project.ReportReceiver". Jeśli jednak pierwszym znakiem nazwy jest kropka, np. ".ReportReceiver", jest on dołączony do nazwy pakietu podanej w elemencie <manifest>.

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

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

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

Więcej informacji o uprawnieniach znajdziesz w sekcji Uprawnienia w podsumowaniu pliku manifestu aplikacji i w Wskazówkach dotyczących bezpieczeństwa.

android:process
Nazwa procesu, w którym działa odbiornik. Normalnie wszystkie komponenty aplikacji działają w ramach domyślnego procesu utworzonego dla niej. Ma taką samą nazwę jak pakiet aplikacji.

Atrybut process elementu <application> może ustawiać inne wartości domyślne dla wszystkich komponentów. Każdy komponent może jednak zastąpić wartość domyślną własnym atrybutem process, co pozwala rozłożyć 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ę od małej litery, odbiornik uruchamia się w globalnym procesie o tej nazwie, o ile ma do tego uprawnienia. Dzięki temu komponenty w różnych aplikacjach współużytkują proces, co zmniejsza wykorzystanie zasobów.

wprowadzone w:
Poziom interfejsu API 1