<receiver>

语法
<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>
包含于
<application>
可包含
<intent-filter>
<meta-data>
说明
声明一个广播接收器(一个 BroadcastReceiver 子类),作为应用的组件之一。广播接收器使应用能够接收系统或其他应用广播的 Intent,即使应用的任何其他组件未运行。

有两种方法可以让系统知道广播接收器。一种方法是使用此元素在清单文件中声明它。另一种方法是在代码中动态创建接收器,并使用 Context.registerReceiver() 方法或其某个重载版本进行注册。

有关如何动态创建接收器的更多信息,请参阅 BroadcastReceiver 类说明。

如果此接收器处理非系统广播,请为 android:exported 指定一个值。如果您希望接收器能够接收来自其他应用的广播,请将此值设置为 "true",如果您只希望接收器能够接收来自您自己应用的广播,请将此值设置为 "false"

如果您已声明 android:permission 属性,则无需将其移除。

警告:限制您在应用中设置的广播接收器数量。广播接收器过多可能会影响应用性能和用户设备的电池续航时间。有关可用于安排后台工作而非 BroadcastReceiver 类的 API 的更多信息,请参阅后台优化

属性
android:directBootAware

广播接收器是否支持直接启动(即在用户解锁设备之前能否运行)。

注意:直接启动期间,应用中的广播接收器只能访问设备保护存储中的数据。

默认值为 "false"

android:enabled
广播接收器是否可以由系统实例化。如果可以,则为 "true";如果不能,则为 "false"。默认值为 "true"

<application> 元素有自己的 enabled 属性,适用于所有应用组件,包括广播接收器。广播接收器要启用,<application><receiver> 属性都必须为 "true"。如果其中任何一个为 "false",则广播接收器处于停用状态,无法实例化。

android:exported
广播接收器是否可以接收来自应用外部非系统源的消息。如果可以,则为 "true";如果不能,则为 "false"。如果为 "false",则广播接收器只接收系统、同一应用的组件或具有相同用户 ID 的应用发送的消息。

如果未指定,则默认值取决于广播接收器是否包含 Intent 过滤器。如果接收器包含至少一个 Intent 过滤器,则默认值为 "true"。否则,默认值为 "false"

此属性并非限制广播接收器外部公开的唯一方法。您还可以使用权限来限制可以向其发送消息的外部实体。请参阅 permission 属性。

android:icon
表示广播接收器的图标。此属性被设置为对包含图像定义的 drawable 资源的引用。如果未设置,则使用为整个应用指定的图标。请参阅 <application> 元素的 icon 属性。

广播接收器的图标(无论是此处设置还是由 <application> 元素设置),也是接收器所有 Intent 过滤器的默认图标。请参阅 <intent-filter> 元素的 icon 属性。

android:label
广播接收器的用户可读标签。如果未设置此属性,则使用为整个应用设置的标签。请参阅 <application> 元素的 label 属性。

广播接收器的标签(无论是此处设置还是由 <application> 元素设置),也是接收器所有 Intent 过滤器的默认标签。请参阅 <intent-filter> 元素的 label 属性。

标签被设置为对字符串资源的引用,以便像用户界面中的其他字符串一样进行本地化。不过,为了方便应用开发,它也可以设置为原始字符串。

android:name
实现广播接收器的类的名称,它是 BroadcastReceiver 的子类。这是一个完全限定的类名称,例如 "com.example.project.ReportReceiver"。不过,作为一种简写形式,如果名称的第一个字符是句点(例如 ".ReportReceiver"),则该名称会附加到 <manifest> 元素中指定的软件包名称后面。

发布应用后,请勿更改此名称,除非您将 android:exported 设置为 "false"

没有默认值。必须指定名称。

android:permission
广播器向广播接收器发送消息所需的权限名称。如果未设置此属性,则 <application> 元素的 permission 属性设置的权限将应用于广播接收器。如果这两个属性都未设置,则接收器不受任何权限保护。

有关权限的更多信息,请参阅应用清单概览中的权限部分和安全提示

android:process
广播接收器运行的进程的名称。通常,应用的所有组件都在为应用创建的默认进程中运行。该进程与应用软件包同名。

<application> 元素的 process 属性可以为所有组件设置不同的默认值。但每个组件都可以通过自己的 process 属性覆盖默认值,从而让您可以将应用分布到多个进程中。

如果此属性的名称以冒号 (:) 开头,则会在需要时创建仅限于应用的新进程,并且广播接收器会在该进程中运行。

如果进程名称以小写字符开头,则接收器会以该名称在全局进程中运行,前提是它拥有执行此操作的权限。这允许不同应用中的组件共享一个进程,从而减少资源使用。

引入时间
API 级别 1