<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 子类)声明为应用程序组件之一。即使应用程序的其他组件未运行,广播接收器也能使应用程序接收系统或其他应用程序广播的意图。

有两种方法可以使系统知道广播接收器。一种是在清单文件中使用此元素声明它。另一种是在代码中动态创建接收器,并使用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 的应用程序发送的消息。

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

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

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

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

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

广播接收器的标签(在此处设置或由<application> 元素设置)也是所有接收器意图过滤器的默认标签。请参阅<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