- 语法:
<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
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2022-12-29。
[]
[]