private ReceiveBroadCast receiveBroadCast; //广播实例 public class RegisteLinster implements OnClickListener { @Override public void onClick(View view) { // 注册广播接收 receiveBroadCast = new ReceiveBroadCast(); IntentFilter filter = new IntentFilter(); filter.addAction(flag); //只有持有相同的action的接受者才能接收此广播 registerReceiver(receiveBroadCast, filter); } } public class ReceiveBroadCast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //获得广播中获得的数据,并显示出来 String message = intent.getStringExtra("data"); txtShow.setText(message); } } 首先咱们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意咱们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。若是没有这一句,就至关于广播电台没有告诉我们收音机用户接收的频率,就很差收听这个广播了。 再来看看如何取消注册,是的程序再也不接收这个类型的广播了。 1 2 3 4 5 6 7 8 9 public class UnregisteLinster implements OnClickListener { @Override public void onClick(View arg0) { unregisterReceiver(receiveBroadCast); } } 怎么样?是否是超级简单的啊,就是将咱们上面的那个广播类的实例传进去就好了。如今注册,取消注册都好了,就剩下如何发送了。看代码: 1 2 3 4 5 6 7 8 9 10 11 public class SendBroadCastListener implements OnClickListener { @Override public void onClick(View arg0) { Intent intent = new Intent(); //Itent就是咱们要发送的内容 intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND)); intent.setAction(flag); //设置你这个广播的action,只有和这个action同样的接受者才能接受者才能接收广播 sendBroadcast(intent); //发送广播 } }
动态注册方式java
咱们在程序中设置了三个按钮,分别是“注册广播”,“取消注册”和“发送广播”。而后每一个按钮设置点击事件来完成广播的演示。ide
最简单的项目的创建过程和按钮事件的创建我再这里就不罗嗦了,不会的能够下载下面的DEMO源码查看。直接看三个按钮的实现方式。this
首先是注册广播的按钮事件代码:spa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
private
ReceiveBroadCast receiveBroadCast;
//广播实例
public
class
RegisteLinster implements OnClickListener
{
@Override
public
void
onClick(View view)
{
// 注册广播接收
receiveBroadCast =
new
ReceiveBroadCast();
IntentFilter filter =
new
IntentFilter();
filter.addAction(flag);
//只有持有相同的action的接受者才能接收此广播
registerReceiver(receiveBroadCast, filter);
}
}
public
class
ReceiveBroadCast extends BroadcastReceiver
{
@Override
public
void
onReceive(Context context, Intent intent)
{
//获得广播中获得的数据,并显示出来
String message = intent.getStringExtra(
"data"
);
txtShow.setText(message);
}
}
|
首先咱们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意咱们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。若是没有这一句,就至关于广播电台没有告诉我们收音机用户接收的频率,就很差收听这个广播了。code
再来看看如何取消注册,是的程序再也不接收这个类型的广播了。blog
1
2
3
4
5
6
7
8
9
|
public
class
UnregisteLinster implements OnClickListener
{
@Override
public
void
onClick(View arg0)
{
unregisterReceiver(receiveBroadCast);
}
}
|
怎么样?是否是超级简单的啊,就是将咱们上面的那个广播类的实例传进去就好了。如今注册,取消注册都好了,就剩下如何发送了。看代码:继承
1
2
3
4
5
6
7
8
9
10
11
|
public
class
SendBroadCastListener implements OnClickListener
{
@Override
public
void
onClick(View arg0)
{
Intent intent =
new
Intent();
//Itent就是咱们要发送的内容
intent.putExtra(
"data"
,
"this is data from broadcast "
+Calendar.getInstance().
get
(Calendar.SECOND));
intent.setAction(flag);
//设置你这个广播的action,只有和这个action同样的接受者才能接受者才能接收广播
sendBroadcast(intent);
//发送广播
}
}
|