<Empfänger>

Syntax:
<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>
Enthalten in:
<application>
kann Folgendes enthalten:
<intent-filter>
<meta-data>
<property>
Beschreibung:
: Deklariert einen Broadcast-Empfänger, eine BroadcastReceiver-Unterklasse, als eine der Komponenten der Anwendung. Mit Broadcast-Empfängern können Anwendungen Intents empfangen, die vom System oder von anderen Anwendungen übertragen werden, auch wenn andere Komponenten der Anwendung nicht ausgeführt werden.

Es gibt zwei Möglichkeiten, einen Übertragungsempfänger dem System bekannt zu machen. Eine Möglichkeit besteht darin, sie mit diesem Element in der Manifestdatei zu deklarieren. Die andere Möglichkeit besteht darin, den Receiver dynamisch im Code zu erstellen und mit der Methode Context.registerReceiver() oder einer ihrer überladenen Versionen zu registrieren.

Weitere Informationen zum dynamischen Erstellen von Empfängern finden Sie in der Beschreibung der Klasse BroadcastReceiver.

Wenn dieser Receiver Broadcasts verarbeitet, die nicht vom System stammen, geben Sie einen Wert für android:exported an. Legen Sie diesen Wert auf "true" fest, wenn Ihr Receiver Broadcasts von anderen Anwendungen empfangen können soll, oder auf "false", wenn Ihr Receiver nur Broadcasts von Ihrer eigenen App empfangen können soll.

Sie müssen das Attribut android:permission nicht entfernen, wenn Sie es bereits deklariert haben.

Warnung:Beschränken Sie die Anzahl der Broadcast-Empfänger in Ihrer App. Zu viele Broadcast-Empfänger können sich auf die Leistung Ihrer App und die Akkulaufzeit der Geräte der Nutzer auswirken. Weitere Informationen zu APIs, die Sie anstelle der Klasse BroadcastReceiver zum Planen von Hintergrundaufgaben verwenden können, finden Sie unter Hintergrundoptimierung.

Attribute:
android:directBootAware

Gibt an, ob der Übertragungsempfänger Direct-Boot-fähig ist, d. h., ob er ausgeführt werden kann, bevor der Nutzer das Gerät entsperrt.

Hinweis : Während des Direktstarts kann ein Broadcast-Empfänger in Ihrer Anwendung nur auf die Daten zugreifen, die im geräteschutzgesicherten Speicher gespeichert sind.

Der Standardwert ist "false".

android:enabled
Gibt an, ob der Übertragungsempfänger vom System instanziiert werden kann. "true", wenn das möglich ist, und "false", wenn nicht. Der Standardwert ist "true".

Das <application>-Element hat ein eigenes enabled-Attribut, das für alle Anwendungskomponenten gilt, einschließlich Broadcast-Empfängern. Die Attribute <application> und <receiver> müssen beide "true" sein, damit der Übertragungsempfänger aktiviert wird. Wenn einer der beiden Werte "false" ist, ist er deaktiviert und kann nicht instanziiert werden.

android:exported
Gibt an, ob der Übertragungsempfänger Nachrichten von Nicht-Systemquellen außerhalb seiner Anwendung empfangen kann. "true", wenn das möglich ist, und "false", wenn nicht. Wenn "false", empfängt der Übertragungsempfänger nur Nachrichten, die vom System, von Komponenten derselben Anwendung oder von Anwendungen mit derselben Nutzer-ID gesendet werden.

Wenn nichts angegeben ist, hängt der Standardwert davon ab, ob der Übertragungsempfänger Intent-Filter enthält. Wenn der Empfänger mindestens einen Intent-Filter enthält, ist der Standardwert "true". Andernfalls ist der Standardwert "false".

Dieses Attribut ist nicht die einzige Möglichkeit, die externe Sichtbarkeit eines Broadcast-Empfängers einzuschränken. Sie können auch eine Berechtigung verwenden, um die externen Einheiten zu begrenzen, die Nachrichten senden können. Weitere Informationen finden Sie unter dem Attribut permission.

android:icon
Ein Symbol für den Übertragungsempfänger. Dieses Attribut wird als Verweis auf eine zeichenfähige Ressource festgelegt, die die Bilddefinition enthält. Wenn es nicht festgelegt ist, wird stattdessen das für die Anwendung als Ganzes angegebene Symbol verwendet. Weitere Informationen finden Sie im Attribut icon des Elements <application>.

Das Symbol des Broadcast-Empfängers, das entweder hier oder durch das <application>-Element festgelegt wird, ist auch das Standardsymbol für alle Intent-Filter des Empfängers. Weitere Informationen finden Sie im Attribut icon des Elements <intent-filter>.

android:intentMatchingFlags

Mit diesem Attribut können Sie genauer festlegen, wie das System eingehende Intents mit App-Komponenten abgleicht. Standardmäßig werden keine speziellen Abgleichsregeln angewendet.

Der für ein <receiver>-Tag festgelegte Wert überschreibt den für das <application>-Tag festgelegten Wert.

Der Wert muss einer oder mehrere der folgenden Flags sein, die durch „|“ getrennt sind:

Flag Beschreibung
none Deaktiviert alle speziellen Abgleichsregeln für eingehende Intents. Wenn Sie mehrere Flags angeben, werden widersprüchliche Werte aufgelöst, indem dem Flag none Vorrang eingeräumt wird.
enforceIntentFilter

Erzwingt einen strengeren Abgleich für eingehende Intents:

  • Explizite Intents müssen mit dem Intent-Filter der Zielkomponente übereinstimmen.
  • Intents ohne Aktion entsprechen keinem Intent-Filter.
allowNullAction

Die Abgleichsregeln werden gelockert, sodass auch Intents ohne Aktion abgeglichen werden können. Dieses Flag wird in Verbindung mit enforceIntentFilter verwendet, um das folgende Verhalten zu erzielen:

  • Explizite Intents müssen mit dem Intent-Filter der Zielkomponente übereinstimmen.
  • Intents ohne Aktion dürfen mit jedem Intent-Filter übereinstimmen.

Weitere Informationen finden Sie im Abschnitt Safer Intents (Sicherere Intents) unter „Verhaltensänderungen in Android 16 (API-Level 36)“.

android:label
Ein für Nutzer lesbares Label für den Übertragungsempfänger. Wenn dieses Attribut nicht festgelegt ist, wird stattdessen das Label verwendet, das für die Anwendung als Ganzes festgelegt ist. Weitere Informationen finden Sie im Attribut label des Elements <application>.

Das Label des Broadcast-Empfängers, das entweder hier oder durch das <application>-Element festgelegt wird, ist auch das Standardlabel für alle Intent-Filter des Empfängers. Weitere Informationen finden Sie im Attribut label des Elements <intent-filter>.

Das Label wird als Verweis auf eine String-Ressource festgelegt, damit es wie andere Strings in der Benutzeroberfläche lokalisiert werden kann. Während Sie die Anwendung entwickeln, kann sie jedoch auch als Raw-String festgelegt werden.

android:name
Der Name der Klasse, die den Broadcast-Receiver implementiert, eine Unterklasse von BroadcastReceiver. Dies ist ein voll qualifizierter Klassenname, z. B. "com.example.project.ReportReceiver". Wenn das erste Zeichen des Namens ein Punkt ist, z. B. ".ReportReceiver", wird es an den im <manifest>-Element angegebenen Paketnamen angehängt.

Nachdem Sie Ihre Anwendung veröffentlicht haben, dürfen Sie diesen Namen nicht mehr ändern, es sei denn, Sie legen android:exported="false" fest.

Es gibt keine Standardeinstellung. Der Name muss angegeben werden.

android:permission
Der Name einer Berechtigung, die Broadcaster benötigen, um eine Nachricht an den Übertragungsempfänger zu senden. Wenn dieses Attribut nicht festgelegt ist, gilt die Berechtigung, die durch das Attribut permission des Elements <application> festgelegt wird, für den Broadcast-Receiver. Wenn keines der Attribute festgelegt ist, ist der Empfänger nicht durch eine Berechtigung geschützt.

Weitere Informationen zu Berechtigungen finden Sie im Abschnitt Berechtigungen in der Übersicht zum App-Manifest und unter Sicherheitstipps.

android:process

Der Name des Prozesses, in dem der Broadcast-Empfänger ausgeführt wird. Normalerweise werden alle Komponenten einer Anwendung im Standardprozess ausgeführt, der für die Anwendung erstellt wurde. Er hat denselben Namen wie das Anwendungspaket.

Mit dem Attribut process des Elements <application> kann ein anderer Standardwert für alle Komponenten festgelegt werden. Jede Komponente kann den Standardwert jedoch mit ihrem eigenen process-Attribut überschreiben, sodass Sie Ihre Anwendung auf mehrere Prozesse verteilen können.

Wenn der diesem Attribut zugewiesene Name mit einem Doppelpunkt (:) beginnt, wird bei Bedarf ein neuer Prozess erstellt, der für die Anwendung privat ist, und der Übertragungsempfänger wird in diesem Prozess ausgeführt.

Wenn der Prozessname mit einem Kleinbuchstaben beginnt, wird der Empfänger in einem globalen Prozess mit diesem Namen ausgeführt, sofern er die Berechtigung dazu hat. Dadurch können Komponenten in verschiedenen Anwendungen einen Prozess gemeinsam nutzen, was den Ressourcenverbrauch verringert.

Eingeführt in:
API-Level 1