Android广播其实和我们生活中的广播类似 笼统的来说就是传播数据。
1.实现了不同应用程序之间的数据传输和共享(比如通过获取短信,电话做到拦截功能)
2.起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。
实现广播其实很简单
1.既然是广播一定要有发送方和接受方
对于发送方来说,我们需要一个桥梁(Intent)
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);
//发送广播
作为接收方,需要对广播进行注册(动态和静态)1.先定义一个接受类public
class
ReceiveBroadCast extends BroadcastReceiver
{
@Override
public
void
onReceive(Context context, Intent intent)
{
//得到广播中得到的数据输出到控制台
String message = intent.getStringExtra(
"data"
);
Log.i("test",message);
}
}
1.1-动态广播(不需要在应用的配置文件中注册,直接使用java代码进行注册)在页面启动的时候注册(OnResume) receiveBroadCast =
new
ReceiveBroadCast();
IntentFilter filter =
new
IntentFilter();
filter.addAction(flag);
//只有持有相同的action的接受者才能接收广播
registerReceiver(receiveBroadCast, filter);
首先我们实现了一个ReceiveBroadCast 类,它继承了BroadcastReceiver并实现了其中的onReceive方法,这样当这个广播被接收的时候就会执行这个方法。注意我们在注册广播的时候使用了filter.addAction方法添加了一个过滤器。如果没有这一句,就相当于广播电台没有告诉咱们收音机用户接收的频率,就不好收听这个广播了。注意!动态广播需要对广播进行注销 unregisterReceiver(flag); //注销相对应的Action那么一个动态的广播就简单的实现了。1.2-静态广播(通过配置文件注册)<receiver android:name=
"com.qlf.broadCast.broadCastReceiveByxml"
>
<intent-filter>
<action android:name=
"com.qlf.broadCastFlag"
>
</action>
</intent-filter>
</receiver>
receiver中的android:name就是我们在程序中的那个接收广播的类。下面的intent-filter和我们讲到的功能类似,而这个action就是上面的那个flag除了使用我们自己发送广播,android也内置了许多广播
分享一个Android系统广播大全http://blog.csdn.net/u013290075/article/details/51115648
新闻热点
疑难解答