实验内容:
1、静态注册一个广播接收器,在开机时用Toast提示“开机成功”,IntentFilter为:
android.intent.action. RECEIVE_BOOT_COMPLETED
2、自定义广播:
(1) 发送一个自定义广播,在intent中附加数据(putExtra方法),key为”extraKey”,value为”CustomValue”
(2) 新创建一个项目,创建BroadcastReceiver子类,接收2中发出的自定义广播,并将附加的数据用log.d打印出来
3、本地广播:
发送一个本地广播,在intent中附加数据(putExtra方法),key为” extraKey”,value为”LocalValue”
创建一个BroadcastReceiver子类,接收广播并以Toast显示接收到的值
实验过程:
1、静态注册广播接收器:打开AndroidManifest.xml,在<application>标签内的<receiver>标签中,所有静态广播接收器都是在这里注册。同时,监听系统开机广播需要权限,所以事先需要声明权限。新建BootCompleReceiver类接收,最后用Toast和Log.d输出,整个过程如下:
申明权限:
静态广播接收器注册:
新建BootCompleReceiver类接收并显示:
Log.d()和Toast显示结果:
2、我把发送自定义广播事件写入按钮btnMyBroadcast中,代码如下图所示,并且创建MyBroadCastReceiver类,用于接收广播,用Log.d()进行提示。需要同上步一样进行静态注册。
点击按钮发送自定义广播:
创建MyBroadCastReceiver类,用于接收广播:
在AndroidManifest.xml内对广播接收器进行注册:
最后接收到广播后用Log.d()打印出来:
3、把发送本地广播事件写入按钮btnLocalBroadcast中,代码如图所示,不同于静态注册的是,动态注册的广播接收器不是在AndroidManifest.xml中注册,而是在代码中注册,而且在最后一定需要取消注册,方法是在onDestory()中调用unregisterReceiver()来实现。由于不需要在AndroidManifest.xml中注册,本广播可采用内部类的方法,将广播接收器写在主活动中,即LocalReceiver类。最后用Toast输出。
点击按钮发送本地广播:
创建LocalReceiver类用于接收广播:
Toast显示广播: