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();
}
}
这样就行了。
应该还有比较多的地方需要补充。