broadcast receiver顾名思义,就是广播收音机,用于应用广播,即所有应用都可以收到的信息。
一、现在mainactivity同一目录下新建一个扩展自BroadcastReceiver的MyBC类,重写其中的onReceiver()方法,用于在接收到广播时做出反应:
public class MyBC extends BroadcastReceiver {
//声明一个ACTION用于接收广播
public static final String ACTION = "cn.eoe.usingbc.intent.action.MyBC";
//接收到广播时通过Intent对象获取接收的数据
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("onReceive,data="+intent.getStringExtra("txt"));
}
}
二、在mainactivity中用 sendBroadcast()方法发送广播,用 registerReceiver()方法注册MyBC( BroadcastReceiver)对象,注册之后就可以接收广播了,不接受的时候用 unregister()方法取消注册即可。
//先声明三个按钮
private Button btnSendBroadcast,btnRegBCR,btnUnregBCR;
//实例一个MyBC对象
private final MyBC mybc = new MyBC();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一个发送广播,用到了Intent对象
btnSendBroadcast = (Button) findViewById(R.id.btnSendBroadcast);
btnSendBroadcast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent i = new Intent(MainActivity.this, MyBC.class);
Intent i = new Intent(MyBC.ACTION);
i.putExtra("txt", "Hello eoe");
sendBroadcast(i);
}
});
//第二个通过registerReceiver()方法,注册receiver,用来接收广播,第一个参数是MyBC对象,第二个参数是MyBC中按特定格式写的ACTION,相当于接收的地址。
btnRegBCR = (Button) findViewById(R.id.btnRegBCR);
btnRegBCR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
registerReceiver(mybc, new IntentFilter(MyBC.ACTION));
}
});
//第三个按钮用来取消receiver的注册
btnUnregBCR=(Button) findViewById(R.id.btnUnregBCR);
btnUnregBCR.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
unregisterReceiver(mybc);
}
});
}