1.在java中通过Context.registerReceiver()方法来注册,动态实现注册的类必须是Broadcast Receiver的子类
2.过程
(1)定义广播
(2)对广播建立监听
final Button sendBroadcast =(Button) findViewById(R.id.sendBroadcast);
sendBroadcast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction("sendMsg");
intent.putExtra("msg","我是广播");
sendBroadcast(intent);
}
});
(3)定义广播接收器
new java class xxx extends BroadcastReceiver 重写onReceive(){ 接收到广播后的动作}
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Test","已经收到广播信息"+intent.getStringExtra("msg"));
}
}
(4)动态绑定,进行监听器设置
final MyReceiver[] receiver = {null};
final Button registerReceiver = findViewById(R.id.registerReceiver);
registerReceiver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
receiver[0] = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("sendMsg");
registerReceiver(receiver[0],filter);
}
});