1 广播概述
广播可以用在应用程序之间或者应用程序与安卓系统之间传递信息。当指定的事件发生时,产生广播通知对该事件感兴趣的应用程序。
广播分为系统广播和自定义广播。系统广播即为Android系统在发生各种系统事件时发送的广播,例如系统启动或设置开始充电时,Android系统会发送相应的广播;自定义广播即为应用程序自己定义的广播。
无论是系统广播还是自定义广播,都需要BroadcastReceiver类即广播接收器来接收广播。
2 创建广播接收器
广播接收器即为BroadcastReceiver类,用来接收系统广播或者自定义广播。创建广播接收器的步骤为首先添加BroadcastReceiver类的子类,之后为该子类添加相应代码,对接收到的广播进行处理。
2.1 添加BroadcastReceiver类的子类
首先选中代码所在包,之后在右键菜单中选择“New->Other->Broadcast Receiver”,如图1所示。
图1 通过菜单添加Broadcast Receiver
之后,在弹出的“New Android Component”即“安卓新组件”的对话框中,设置添加的BroadcastReceiver类的子类的“Class Name”(类名)、是否是“Exported”(被其它应用隐式调用)、是否是“Enabled”(被系统实例化)和子类的“Source Language”(源代码语言类型),如图2所示。

图2 “安卓新组件”的对话框
2.2 添加相应代码
在项目中添加了BroadcastReceiver类的子类后,接下来为该子类添加相应代码,对接收到的广播进行处理。
首先打开BroadcastReceiver类的子类MyReceiver2对应的源代码文件,如图3所示。

图3 MyReceiver2源代码
从图3中可以看出,MyReceiver2类重写了父类的onReceive()方法,当其收到相应的广播后,会调用该方法。onReceive()方法的第一个参数context表示上下文对象;第二个参数intent是接收到的Intent对象,也可以看作是接受到的广播消息。
相关链接1 广播消息本身会被封装在一个Intent对象中,该对象的操作字符串会标识所发生的事件(例如 android.intent.action.AIRPLANE_MODE)。该 Intent 可能还包含绑定到其 extra 字段中的附加信息。
接下来就是在onReceive()方法编写代码,如图4所示。

图4 重写onReceive()方法
其中,通过StringBuilder类的对象sb(图4①)构造一个字符串,该字符串中包含了收到广播消息对应的动作(图4②)和数据(图4③),最后将sb转换为字符串(图4④)并通过Toast显示(图4⑤)。

1420

被折叠的 条评论
为什么被折叠?



