- 语法
<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
属性,则无需删除它。警告: 限制应用中设置的广播接收器的数量。设置过多的广播接收器会影响应用的性能和用户设备的电池寿命。有关您可以使用的 API(代替
BroadcastReceiver
类)来调度后台工作的信息,请参阅 后台优化。 - 属性
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
本页上的内容和代码示例受 内容许可 中描述的许可的约束。Java 和 OpenJDK 是 Oracle 和/或其关联公司在美国和其他国家的商标或注册商标。
上次更新时间:2023 年 5 月 4 日(协调世界时)。
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"缺少我需要的信息" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"太复杂/步骤太多" },{ "type": "thumb-down", "id": "outOfDate", "label":"已过时" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"示例/代码问题" },{ "type": "thumb-down", "id": "otherDown", "label":"其他" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"易于理解" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"解决了我的问题" },{ "type": "thumb-up", "id": "otherUp", "label":"其他" }]
{ "lastModified": "上次更新时间:2023 年 5 月 4 日(协调世界时)。", "confidential": False }