package lizhen.network;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo.State;
public class NetworkState {
private Context context;
private ConnectivityManager connectivityManager; //網絡連接管理
private State mobile; //移動網絡狀態
private State wifi; //WIFI網絡狀態
public NetworkState(Context context) {
this.context = context;
init();
}
/**
* 初始化
* */
private void init() {
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
/**
* 當前網絡是否已連接
* @return true 網絡已連接<br />false 其它
* */
public boolean isConnected() {
boolean result = false;
mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
result = (mobile == State.CONNECTED || wifi == State.CONNECTED);
return result;
}
/**
* 當前網絡是否正在連接
* @return true 網絡正在連接<br />false 其它
* */
public boolean isConnecting() {
boolean result = false;
mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
result = (mobile == State.CONNECTING || wifi == State.CONNECTING);
return result;
}
}
通过调用Context的方法getSystemService(Context.CONNECTIVITY_SERVICE)可以返回ConnectivityManager实例,使用ConnectivityManager,我们可以获取当前网络的状态。
以上代码作为示例,检查当前网络(包括移动网络和WIFI网络)是否已连接或是否正在连接。
注:网络状态有如下6种(定义在NetworkInfo.State中)
- CONNECTED 已连接
- CONNECTIONG 正在连接
- DISCONNETED 已断开
- DISCONNETING 正在断开
- SUSPENDED 已挂起
- UNKNOW 未知