5 接收自定义广播
在“2 创建广播接收器”中创建的广播接收器除了可以接收系统广播之外,还可以接收其他应用程序或本程序发送的自定义广播。
5.1 发送自定义广播
在“2.2 添加相应代码”中提到,广播消息本身会被封装在一个Intent对象中,因此,发送自定义广播也是通过Intent实现的,如图9所示。
图9 发送自定义广播
其中,图9①定义了Intent类的对象intent;图9②通过setAction()方法设置了intent的Action(活动);图9③通过putExtra()方法设置了intent的扩展数据,“msg”是扩展数据的名称,“现在正在广播”是扩展数据的内容,接收端可以根据扩展数据的名称找到其内容;图9④通过sendBroadcast()方法实现自定义数据的发送。
5.2 接收自定义数据
接收自定以数据与“2.2 添加相应代码”和“3 注册广播接收器”中提到的创建广播接收器以及注册广播接收器的代码类似。
5.2.1 添加处理消息的代码
在“2.2 添加相应代码”中提到的自定义广播接收器MyReceiver2的onReceive()方法中添加如图10所示的代码。
图10 处理消息
其中,图10①中的intent是Intent类的对象,即收到的广播消息,getAction()方法获取广播消息中的Action(活动),从“5.1 发送自定义广播”中可知,自定义广播的Action(活动)的值是“yang”;图10②对接收到的广播的活动进行判断,如果是“yang”,即为自定义广播;通过getStringExtra()方法获取广播中的扩展信息,“msg”是“5.1 发送自定义广播
”提到的广播扩展信息的名称,此时getStringExtra()方法会返回扩展信息的值,即“现在正在广播”。
5.2.2 注册广播接收器
为了接收自定义数据而注册的广播接收器的代码如图11所示。
图11 接收自定义数据
与图5相比,只是多出了为IntentFilter类的对象filter添加“yang”的Action(动作),因为自定义广播的Action(活动)是“yang”。