您的位置:首页 > 理论基础 > 计算机网络

Android 监控网络状态

2015-04-03 13:11 162 查看

使用ConnectivityManager监听网络状态变化

博客分类:
Android 文章

connectivitymanager

Java代码







mIntenFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {

if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {

Log.i(TAG, "netWork has lost");
}

NetworkInfo tmpInfo = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
Log.i(TAG, tmpInfo.toString() + " {isConnected = " + tmpInfo.isConnected() + "}");
}
};

mIntenFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
mConnectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {

if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
Log.i(TAG, "netWork has lost");
}

NetworkInfo tmpInfo = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
Log.i(TAG, tmpInfo.toString() + " {isConnected = " + tmpInfo.isConnected() + "}");
}
};


注册Receiver,监听网络变化:

Java代码







registerReceiver(mReceiver, mIntenFilter);

registerReceiver(mReceiver, mIntenFilter);


取消注册,不再监听网络变化:

Java代码







unregisterReceiver(mReceiver);

unregisterReceiver(mReceiver);


也可在AndroidManifest.xml中注册BroadcastReceiver

Xml代码







<receiver android:name=".ConnectionReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>

<receiver android:name=".ConnectionReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>


程序第一次启动时会收到一个Broadcast

从 GPRS 到 WIFI,程序至少会收到3个Broadcast

第一个是连接到WIFI

第二个是断开GPRS

第三个是连接到WIFI

从WIFI到GPRS,程序至少会收到2个Broadcast

第一个是断开Wifi

第二个是连接到GPRS

http://blog.csdn.net/chenzheng_java/article/details/6387116/
android之ConnectivityManager简介,网络连接状态

上面判断网络类型的方法只是为了展示用法,其实完全可以通过networkInfo.getType()的返回值来判断。

如:

Context context = listActivity.getApplicationContext();//获取应用上下文

ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);//获取系统的连接服务

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();//获取网络的连接情况

if(activeNetInfo.getType()==ConnectivityManager.TYPE_WIFI){
//判断WIFI网

}else if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) {
//判断3G网

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: