首页 > 代码库 > Android之BroadcastReceiver

Android之BroadcastReceiver

BroadcastReceiver也是Android的四大组件之一。

先说说我对BroadcastReceiver的一点理解吧:BroadcastReceiver主要是用来收消息的,包括系统的电量提示不足或者是收到短信时做的事情。

比较官方的理解:在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。

写点例子吧。

关于接收系统的Broadcast的一个小例子。

例子是关于断网以后的一个提示。

1.自己写一个类,继承BroadcastReceiver

package zf.receiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.widget.Toast;public class MyReceiver extends BroadcastReceiver {	@Override	public void onReceive(Context context, Intent intent) {		// TODO Auto-generated method stub		if(!isNetworkAvailable(context)){			Toast.makeText(context, "亲,断网了!", Toast.LENGTH_SHORT).show();		}	}	// 判断是否断网了	public static boolean isNetworkAvailable(Context context) {          ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo[] info = mgr.getAllNetworkInfo();          if (info != null) {              for (int i = 0; i < info.length; i++) {                  if (info[i].getState() == NetworkInfo.State.CONNECTED) {                      return true;                  }              }          }          return false;      } }

2.在AndroidManifext.xml的文件里面注册

<receiver	    android:name="zf.receiver.MyReceiver" >	    <intent-filter>	        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />	        <category android:name="android.intent.category.DEFAULT" />	    </intent-filter>	</receiver>

同时允许联网的操作

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

这样当运行时断网就可以了。

自己注册一个Broadcast然后BroadcastReceiver接收的一个小例子。

1.在Activity中

public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                btn = (Button)findViewById(R.id.Button01);        btn.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				Intent intent= new Intent();				intent.setAction(MY_ACTION);				//为Intent添加附加信息				intent.putExtra("msg", "日,我草啊");				//发出广播				sendBroadcast(intent);							}		});    }

2.在AndroidManifext.xml文件中注册

<receiver              android:name="MyReceive" >              <intent-filter>                 <action android:name="com.chaowen.action.MY_ACTION" />              </intent-filter>           </receiver>

3.创建一个类继承BroadcastReceiver,实现其onReceiver

package com.chaowen;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/** * 接收广播 * @author chaowen * */public class MyReceive extends BroadcastReceiver {	@Override	public void onReceive(Context context, Intent intent) {	     //从Intent中获得信息		String msg = intent.getStringExtra("msg");        //使用Toast显示		Toast.makeText(context, msg, Toast.LENGTH_LONG).show();	}}

这样就行了。

应该还有比较多的地方需要补充。

Android之BroadcastReceiver