怎么在Android中利用BroadcastReceiver监听网络连接状态

  介绍

本篇文章为大家展示了怎么在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监听网络连接状态