介绍
本篇文章为大家展示了怎么在Android中利用BroadcastReceiver监听网络连接状态,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
<强> 1,定义广播接收器,强>
NetState。java
package huaxa.it.map.net; import huaxa.it.map.demo.MapDemo; import com.baidu.mapapi.map.MapView; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.NetworkInfo.State; import android.net.wifi.WifiInfo; import android.util.Log; import android.widget.Toast;/* * ,* @项目名:ZhiHUIGuangDong ,* @包名:huaxa.it.zhihuiguangdong ,* @类名:NetState ,* @创建者:,黄夏莲 ,* @创建时间:,2016年10月22日,,上午1:10:16 *大敌; ,* @描述:待办事项 ,*/public class  NetState extends  BroadcastReceiver { ,public int flag =, 0; ,private int  flag1=0; ,@Override ,public void  onReceive (Context 上下文,Intent __arg1) ,{ ConnectivityManager 才能;manager =, (ConnectivityManager),上下文 ,,,.getSystemService (Context.CONNECTIVITY_SERVICE); NetworkInfo 才能;activeNetworkInfo =, manager.getActiveNetworkInfo (); if 才能;(activeNetworkInfo ==, null) {才能 ,才能Toast.makeText(上下文,“当前无网络,请检查移动设备的网络连接,,,Toast.LENGTH_SHORT) ,,,,,告诉(); ,,flag =, 1; ,,flag1 =, 1; ,,Log.i (“TAG",“网络未连接+国旗+“+标志); ,,}//才能,activeNetworkInfo.getTypeName();,以何种方式连线//,才能:cmwap/cmnet/无线/uniwap/uninet//才能,activeNetworkInfo.isAvailable();,当前网络是否可用(真正的)//才能,activeNetworkInfo.isFailover();网络有问题 其他的才能 {才能 ,,if (! activeNetworkInfo.isAvailable () ,,,,| |,activeNetworkInfo.isFailover ()) ,,{ ,,,Toast.makeText(上下文,“当前网络不可用“,,Toast.LENGTH_SHORT),告诉(); ,,,flag =, 1; ,,,flag1=2; ,,,Log.i (“TAG",“当前网络不可用国旗+“+标志); ,,} ,,if (flag ==, 1) ,,{ ,,,if (activeNetworkInfo.getType (),==, ConnectivityManager.TYPE_MOBILE) ,,,{ ,,,,Toast.makeText(上下文,“已连接上移动数据“,,Toast.LENGTH_SHORT) ,,,,,,,告诉(); ,,,}, ,,,{ ,,,,Toast.makeText(上下文,“已连接上无线数据“,,Toast.LENGTH_SHORT) ,,,,,,,告诉(); ,,,} ,,,Log.i (“TAG",“网络,国旗+“+国旗+“.....“+ flag1); ,,} ,,} ,} }
<强> 2,注册广播接收机
强>
在活动中加入:
NetState receiver =, new NetState (); IntentFilter filter =, new IntentFilter (); filter.addAction (ConnectivityManager.CONNECTIVITY_ACTION); this.registerReceiver(接收机,过滤器);//注册 receiver.onReceive (,, null);//接收
<强>广播接收机知识点
强>
每收到一次消息时便调用onReceive(上下文语境,意图意图)对其处理。
意图可以传递数据实现自定义广播事件,然后通过sendBroadcast(意图)发送出去。通过onReceive()方法处理接收的这个的数据。
String Action =,“xxxxxx"//xxxxxx指的是自定义的广播的行动属性,如com.annyAndroid.broadcastdemo.action.USER_BROADCAST,随便定义,但是在广播接收器的intentfilter中属的行动性必须和这个一致 Intent Intent =, new 意图(); intent.putExtra (“user",“huaxa");//键值 sendBroadcast(意图);
<强>注意:>强如果在onReceive()方法中的代码执行时间超过5 s的话,Android会ANR。
1,使用广播接收器
public class AAAAA extends Broadcast 接收机{ ,@Override ,onReceive (Context 上下文,Intent 意图){ ,//处理广播事件 ,…… ,} }
2,注册广播接收机(2种方法)
1),在清单。xml里面:
& lt; receiver android: name=?MyReceiver"祝辞, ,,& lt; intent-filter>, ,,,& lt; action android: name=皒xxxxxxx"/比; ,,,& lt; !——xxxxx广播事件的行动属性,——比; ,,& lt;/intent-filter>, null null null null null怎么在Android中利用BroadcastReceiver监听网络连接状态