监听网络状态

bible 2011-10-13

在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。

ConnectivityManager有四个主要任务:

1、监听手机网络状态(包括GPRS,WIFI,UMTS等)

2、手机状态发生改变时,发送广播

3、当一个网络连接失败时进行故障切换

4、为应用程序提供可以获取可用网络的高精度和粗糙的状态

当我们要在程序中监听网络状态时,只要以下几个步骤即可:

1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开

importandroid.app.Activity;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.content.IntentFilter;

importandroid.net.ConnectivityManager;

importandroid.net.NetworkInfo;

importandroid.os.Handler;

publicclassNetstateReceiverextendsBroadcastReceiver{

privateHandlermHandler;

privateActivitymAct;

privateNetstateReceivermReceiver;

publicfinalstaticintIS_CONNECTED=5;

publicfinalstaticintIS_NOT_CONNECTED=6;

privateNetstateReceiver()

{

super();

}

publicNetstateReceiver(Handlerhandler,Activityact)

{

mHandler=handler;

mAct=act;

if(mReceiver==null)

mReceiver=newNetstateReceiver();

}

@Override

publicvoidonReceive(Contextcontext,Intentintent){

ConnectivityManagermanager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfogprs=manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

NetworkInfowifi=manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if(!gprs.isConnected()&&!wifi.isConnected())

{

mHandler.sendEmptyMessage(IS_NOT_CONNECTED);

}

else

{

mHandler.sendEmptyMessage(IS_CONNECTED);

}

}

publicvoidregister()

{

IntentFilterfilter=newIntentFilter(Context.CONNECTIVITY_SERVICE);

mAct.registerReceiver(mReceiver,filter);

}

publicvoidunregister()

{

mAct.unregisterReceiver(mReceiver);

}

}

相关推荐