发送广播
通过权限限制广播
带权限的发送
带权限的接收
安全注意事项和最佳做法
相关文档:
=====
https://developer.android.google.cn/guide/components/broadcasts (谷歌官方文档)
前言
==
Android 应用与 Android 系统和其他 Android 应用之间可以相互收发广播消息,这与发布-订阅设计模式相似。这些广播会在所关注的事件发生时发送。举例来说,Android 系统会在发生各种系统事件时发送广播,例如系统启动或设备开始充电时。再比如,应用可以发送自定义广播来通知其他应用它们可能感兴趣的事件(例如,一些新数据已下载)。
应用可以注册接收特定的广播。广播发出后,系统会自动将广播传送给同意接收这种广播的应用。
一般来说,广播可作为跨应用和普通用户流之外的消息传递系统。但是,您必须小心,不要滥用在后台响应广播和运行作业的机会,因为这会导致系统变慢。
关于系统广播
======
系统会在发生各种系统事件时自动发送广播,例如当系统进入和退出飞行模式时。系统广播会被发送给所有同意接收相关事件的应用。
广播消息本身会被封装在一个 [Intent]( )
对象中,该对象的操作字符串会标识所发生的事件(例如 android.intent.action.AIRPLANE_MODE
)。该 Intent 可能还包含绑定到其 extra 字段中的附加信息。例如,飞行模式 intent 包含布尔值 extra 来指示是否已开启飞行模式。
如需详细了解如何读取 intent 并从 intent 中获取操作字符串,请参阅 Intent 和 Intent 过滤器。
有关系统广播操作的完整列表,请参阅 Android SDK 中的 BROADCAST_ACTIONS.TXT
文件。每个广播操作都有一个与之关联的常量字段。例如,常量 [ACTION_AIRPLANE_MODE_CHANGED]( )
的值为 android.intent.action.AIRPLANE_MODE
。每个广播操作的文档都可以在关联的常量字段中找到。
系统广播所发生的更改
==========
随着 Android 平台的发展,它会不定期地更改系统广播的行为方式。如果您的应用以 Android 7.0(API 级别 24)或更高版本为目标平台,或者安装在搭载 Android 7.0 或更高版本的设备上,请注意以下更改。
Android 9
从 Android 9(API 级别 28)开始,NETWORK_STATE_CHANGED_ACTION
广播不再接收有关用户位置或个人身份数据的信息。
此外,如果您的应用安装在搭载 Android 9 或更高版本的设备上,则通过 WLAN 接收的系统广播不包含 SSID、BSSID、连接信息或扫描结果。要获取这些信息,请调用