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(); } }
这样就行了。
应该还有比较多的地方需要补充。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。