在android开发的过程中会经常使用到Broadcast Receiver。
说到Broadcast Receiver的使用,肯定要先会发送一个广播,那么怎样发送广播呢?下面给出一段在Activity中的代码:
Intent intent = new Intent(); //new 一个意图对象
intent.setAction(org.androidpn.act.MyService); //通俗点说就是这个广播到达的地方,自定义
sendBroadcast(intent);//调用发送广播的方法
当然了,这些只是发送广播必须的元素,你还可以给这个广播带上一些信息:intent.putExtra("key","value"); 经过这些就可以发送一个广播了。
有了发送广播的,当然要有广播接收者了。要实现广播接受者就必须要继承BroadcastReceiver,然后重写onReceive()方法,在这个方法中你就可
以做一些处理了。
public class MyBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
}
}
有了这些东东还是不能接收广播,你还需要注册广播,注册广播有两种方法:
一:在代码中注册,这种不是常驻型,一般是在onStart()中注册,在onStop()中取消,(在BroadcastReceiver的Context对象被销毁时,
BroadcastReceiver也会自动取消注册)
protected void onStart() {
// TODO Auto-generated method stub
IntentFilter filter =new IntentFilter();
filter.addAction("org.androidpn.act.PayActivity");
registerReceiver(BroadcastReceiver, filter); //注册Broadcast Receiver
super.onStart();
}
二:在AndroidManifest.xml中注册,常驻型。
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="org.androidpn.act.MyBroadcast">
<intent-filter android:priority="20">
<action android:name="org.androidpn.act.PayActivity"/>
</intent-filter>
</receiver>
</application>
容纳多个接受程序:Intent.setAction(); 里配置要相同。