BroadcastReceiver:广播接收者,及是接收来自android内部的广播,对接收到的广播进行选择处理,
想要接收什么样的广播和内部定义的广播匹配,匹配则进行该做的处理操作,没有匹配则无操作,就比如在玩
游戏的同时接收到短信事件,对此你要做什么操作,是想看短信内容还是不做什么处理继续玩游戏,这就是广
播的用途,android内部的四大内置类之一:BroadcastReceiver
下面介绍广播接收者的功能用途:
1.首先实现功能是:有一个发送广播的按钮,编写的广播接收者对其处理。
则布局代码很简单只是一个按钮
2.编写广播接收类Reeiver,继承BroadcastReceiver
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("哈哈,Received");
}
}
onReceive()方法是对接收匹配的广播的处理操作,此时我只是输出一个文本,提示我已经接收到广播信号
3.因BroadcastReceiver是android内置类就如Activity类一样需要在AndroidManifest.xml文件注册
<receiver android:name=".Receiver"> <intent-filter > <action android:name="android.intent.action.name"/> </intent-filter> </receiver>
其中action的name属性是自己定义的名字,想要匹配广播则发送的广播和此名称一致即可对其处理
4.main.xml 代码
点击按钮设置intent的action和上面设置一致及:android.intent.action.name
则接收者就可接收到广播对其操作
sendBroadcast():发送广播
public class MainActivity extends Activity {
private Button send;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send=(Button) this.findViewById(R.id.send);
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i=new Intent();
i.setAction("android.intent.action.name");
sendBroadcast(i);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
可想结果则会输出:哈哈,Received