magic00 2014-02-26
1、如何接收广播
接收广播首先要编写一个广播接收器类,该类必须从BroadcastReceiver或者子类继承。
在BroadcastReveiver.onReceive(Context context,Intent intent)中编写处理广播的代码,并且要在AndroidManifest.xml中注册。
1)自定义BroadcastReceiver类
class MyBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context,Intent intent){
//当接收广播后要执行的代码
//如果同一个广播接收器处理多个广播,则可以使用intent.getAction()来判断
if("action1".equals(intent.getAction()){
.....
}else if ("action1".equals(intent.getAction()){
.....
}
}
} 2)注册广播,在AndroidManifest.xml添加活着动态注册
<receiver android:name=".MyBroadcastReceiver">
<!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action,可以是自定义的也可是系统的 -->
<intent-filter>
<action android:name="com.lydia.broadcast.test"/>
</intent-filter>
</receiver> 3)发送广播
//指定广播动作
Intent intent = new Intent("com.lydia.broadcast.test");
// 添加category
intent.addCategory("com.lydia.mycategory");
// 设置广播数据
intent.putExtra("name","broadcast_data");
// 发送广播
sendBroadcast(intent); //发送广播事件 #######################################
2、注册方法有2种:动态注册和静态注册
1)静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。
<receiver android:name=".MyBroadcastReceiver">
<!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action,可以是自定义的也可是系统的 -->
<intent-filter>
<action android:name="com.lydia.broadcast.test"/>
</intent-filter>
</receiver> 2)动态注册:在代码中通过registReceiver()手工注册,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。//注册代码:
//生成BraodcastReceiver对象
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
//生成一个IntentFilter对象
IntentFilter filter = new IntentFilter();
filter.addAction("com.lydia.broadcast.test");
//将BroadcastReceiver对象注册到系统当中
MyActivity.this.registerReveiver(myReceiver,filter);
// 销毁代码:
unregisterReceiver(myReceiver);