<接收方>

语法:
<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 属性,无需将其移除。

警告:请限制您在应用中设置的广播接收器的数量。广播接收器过多会影响应用的性能及用户设备的电池续航时间。如需详细了解您可以用于安排后台工作的 API(而不是 BroadcastReceiver 类),请参阅后台优化

属性:
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
表示广播接收器的图标。此属性应设置为对包含图片定义的可绘制资源的引用。如果未设置此属性,则改用为整个应用指定的图标。请参阅 <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