在用户浏览网络信息时,如果网络突然断开,可以及时的提醒用户网络已断开。要实现这个功能,我们可以实现一个广播接收者来接收网络状态改变的广播,当由连接状态变为断开状态时,系统会发送一条广播,广播接收者接收之后,再通过网络的状态做出相应的操作。
NetworkStateReceiver.java
public class NetworkStateReceiver extends BroadcastReceiver { private static final String TAG="NetworkStateReceiver"; @Override public void onReceive(Context context, Intent intent){ Log.i(TAG,"network state changed"); if(!isNetworkAvailable(context)){ Toast.makeText(context,"network disconnected!",1).show(); } } /** *网络是否可用 *@param context *@return */ 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; } }
在清单文件中注册广播接收者:
<recevier android:name=".NetworkStateReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver>
因为在isNetworkAvailable方法中我们使用了网络状态相关的API,所以需要声明相关的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>