隐式广播异常

作为 Android 8.0(API 级别 26)后台执行限制的一部分,目标 API 级别为 26 或更高的应用无法在其清单中为隐式广播注册广播接收器,除非广播专门发送给它们。但是,一些广播不受这些限制。无论应用的目标 API 级别是什么,应用都可以继续为以下广播注册侦听器。

ACTION_LOCKED_BOOT_COMPLETEDACTION_BOOT_COMPLETED
由于这些广播仅在首次启动时发送一次,并且许多应用需要接收这些广播(例如,计划作业和警报),因此被豁免。
ACTION_USER_INITIALIZEandroid.intent.action.USER_ADDEDandroid.intent.action.USER_REMOVED
特权权限保护这些广播,因此大多数普通应用无论如何都无法接收它们。
android.intent.action.TIME_SETACTION_TIMEZONE_CHANGEDACTION_NEXT_ALARM_CLOCK_CHANGED
时钟应用可能需要接收这些广播,以便在时间、时区或警报更改时更新警报。
ACTION_LOCALE_CHANGED
仅在区域设置更改时发送,这种情况并不常见。应用可能需要在区域设置更改时更新其数据。
ACTION_USB_ACCESSORY_ATTACHEDACTION_USB_ACCESSORY_DETACHEDACTION_USB_DEVICE_ATTACHEDACTION_USB_DEVICE_DETACHED
当应用需要了解这些与 USB 相关的事件时,没有比注册广播更好的替代方案。
BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGEDBluetoothA2dp.ACTION_CONNECTION_STATE_CHANGEDACTION_ACL_CONNECTEDACTION_ACL_DISCONNECTED
如果应用接收这些蓝牙事件的广播,用户体验不太可能受到影响。
ACTION_CARRIER_CONFIG_CHANGEDTelephonyIntents.ACTION_*_SUBSCRIPTION_CHANGEDTelephonyIntents.SECRET_CODE_ACTIONACTION_PHONE_STATE_CHANGEDACTION_PHONE_ACCOUNT_REGISTEREDACTION_PHONE_ACCOUNT_UNREGISTERED
OEM 电话应用可能需要接收这些广播。
LOGIN_ACCOUNTS_CHANGED_ACTION
某些应用需要了解登录帐户的变化,以便为新的和已更改的帐户设置计划操作。
ACTION_ACCOUNT_REMOVED
当帐户被移除时,具有帐户可见性的应用会收到此广播。如果这是应用需要执行的唯一帐户更改,我们建议应用使用此广播而不是已弃用的 LOGIN_ACCOUNTS_CHANGED_ACTION
ACTION_PACKAGE_DATA_CLEARED
仅在用户从“设置”中显式清除其数据时发送,因此广播接收器不太可能显著影响用户体验。
ACTION_PACKAGE_FULLY_REMOVED

某些应用需要在另一个软件包被移除时更新其存储的数据。对于这些应用,没有比注册此广播更好的替代方案。

注意:其他与包相关的广播(例如ACTION_PACKAGE_REPLACED)**不**豁免后台执行限制。这些广播非常常见,豁免它们可能会对性能造成影响。

ACTION_NEW_OUTGOING_CALL

需要对用户发起呼叫做出响应的应用需要接收此广播。

ACTION_DEVICE_OWNER_CHANGED

此广播发送频率不高。某些应用需要接收它,以便知道设备的安全状态发生了变化。

ACTION_EVENT_REMINDER

日历提供程序发送,用于将事件提醒发布到日历应用。由于日历提供程序不知道日历应用是什么,因此此广播必须是隐式的。

ACTION_MEDIA_MOUNTEDACTION_MEDIA_CHECKINGACTION_MEDIA_UNMOUNTEDACTION_MEDIA_EJECTACTION_MEDIA_UNMOUNTABLEACTION_MEDIA_REMOVEDACTION_MEDIA_BAD_REMOVAL

这些广播是在用户与设备进行物理交互(例如安装或移除存储卷)或作为启动初始化的一部分(当可用卷被挂载时)时发送的。它们并不常见,通常在用户的控制之下。

SMS_RECEIVED_ACTIONWAP_PUSH_RECEIVED_ACTION

短信接收应用依赖于这些广播。