Android开发之获取手机网络状态及网络是否连接
2015-11-29 15:00
661 查看
在Android中,判断网络状态和网络是否连接时一件很简单的事情,SDK为我们提供了一个ConnectivityManager类来帮助我们获取网络的状态。
在网络状态改变的情况下,Android自身会发出一个Action为:android.net.conn.CONNECTIVITY_CHANGE
的broadcastReceiver。
我们只需要创建一个Receiver来接收系统发出的广播即可获取网络状态。OK,下面看代码:
package co.huiqu.webapp.common.utils;
import co.huiqu.webapp.HuiQuApplication;
import co.huiqu.webapp.constant.App;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
*
* @Description:网络监听器
* @author song
* @date 2015年11月9日
*/
public class NetManagerService extends BroadcastReceiver {
/**
* 网络状态
*/
public static App.NetworkStatus mNetworkStatus = App.NetworkStatus.CONNECTED;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo mWifiNetInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(mMobileNetInfo.isConnected() && mWifiNetInfo.isConnected()) {
mNetworkStatus = App.NetworkStatus.CONNECTED;
}else if(mMobileNetInfo.isConnected()) {
mNetworkStatus = App.NetworkStatus.MOBILE;
}else if(mWifiNetInfo.isConnected()) {
mNetworkStatus = App.NetworkStatus.WIFI;
}else if(!(mMobileNetInfo.isConnected() && mWifiNetInfo.isConnected())) {
mNetworkStatus = App.NetworkStatus.DISCONNECTED;
}else{
mNetworkStatus = App.NetworkStatus.DISCONNECTED;
}
}
//判断网络是否连接
public static boolean isNetworkAvailable() {
Context context = HuiQuApplication.getInstance();
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
return false;
}
}
上面的代码相信大家很容易理解,ok,到此为止,在Android中获取网络状态就搞定啦!
在网络状态改变的情况下,Android自身会发出一个Action为:android.net.conn.CONNECTIVITY_CHANGE
的broadcastReceiver。
我们只需要创建一个Receiver来接收系统发出的广播即可获取网络状态。OK,下面看代码:
package co.huiqu.webapp.common.utils;
import co.huiqu.webapp.HuiQuApplication;
import co.huiqu.webapp.constant.App;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
*
* @Description:网络监听器
* @author song
* @date 2015年11月9日
*/
public class NetManagerService extends BroadcastReceiver {
/**
* 网络状态
*/
public static App.NetworkStatus mNetworkStatus = App.NetworkStatus.CONNECTED;
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo mWifiNetInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(mMobileNetInfo.isConnected() && mWifiNetInfo.isConnected()) {
mNetworkStatus = App.NetworkStatus.CONNECTED;
}else if(mMobileNetInfo.isConnected()) {
mNetworkStatus = App.NetworkStatus.MOBILE;
}else if(mWifiNetInfo.isConnected()) {
mNetworkStatus = App.NetworkStatus.WIFI;
}else if(!(mMobileNetInfo.isConnected() && mWifiNetInfo.isConnected())) {
mNetworkStatus = App.NetworkStatus.DISCONNECTED;
}else{
mNetworkStatus = App.NetworkStatus.DISCONNECTED;
}
}
//判断网络是否连接
public static boolean isNetworkAvailable() {
Context context = HuiQuApplication.getInstance();
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
return false;
}
}
上面的代码相信大家很容易理解,ok,到此为止,在Android中获取网络状态就搞定啦!
相关文章推荐
- http协议基础
- Android开发:网络编程
- Epoll 的tcp通信代码(服务器+客户端)
- iOS开发——网络请求案例汇总(AFNetworking)
- WebKit之Http响应
- WebKit之Http请求
- 黑马程序员—Java基础—网络编程
- OSI七层模型解析
- 基于tcp raw socket实现的端到端rtt,丢包率检测程序(1)
- 基于异步竞争的无线传感器网络MAC层协议介绍(X-MAC ContikiMAC)
- 深度学习系列(三):简单网络的自编码学习
- 深度学习系列(二):从神经网络到深度学习
- Android操作HTTP实现与服务器通信
- Android使用HTTP协议访问网络
- 《TCP/IP详解 卷1:协议》 读书笔记 第三章 IP:网际协议
- 人人都应该懂点 TCP
- 获取网络图片并下载到本地相册
- 探索软件智能高效自动化网络管理的规律
- 简单的Http共享文件SimpleHTTPServer
- 网络编程基础API