劳驾如何判断手机数据连接已启用?
不论当前使用何种网络,只需要知道手机设置里(或者下滑的快捷图标里)是否已开启了
数据连接(启用通过移动网络访问数据)
我测试的情况 当前使用的是WIFI, 但是无论手机的数据连接是否被勾选
NetworkInfo 里各个参数都不变啊
[解决办法]
NetworkInfo一般用来判断是否有网络连接,可以分别判断是否有WIFI或者移动网络。你需要的应该是判断是否有移动网络吧,而不是想知道这个选项是打开还是关闭吧?
ConnectivityManager con = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE);
??? ? ? ? ? ? ? boolean wifi = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .isConnectedOrConnecting();
??? ? ? ? ? ? ? boolean internet = con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .isConnectedOrConnecting();
??? ? ? ? ? ? ? if (wifi
[解决办法]
internet) {
??? ? ? ? ? ? ? ? ? ? ? // 有网
??? ? ? ? ? ? ? ? ? ? ? flag = "0";
??? ? ? ? ? ? ? } else {
??? ? ? ? ? ? ? ? ? ? ? // 没网
??? ? ? ? ? ? ? ? ? ? ? flag = "1";
??? ? ? ? ? ? ? }
private static NetworkInfo getCurrentActiveNetworkInfo(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null)
return connectivityManager.getActiveNetworkInfo();
return null;
}
public static int getCurrentNetType(Context context) {
int result = NETTYPE_NONE;
NetworkInfo localNetworkInfo = getCurrentActiveNetworkInfo(context);
if (localNetworkInfo == null) {
return result;
}
if (localNetworkInfo.getState() == NetworkInfo.State.CONNECTED) {
if (localNetworkInfo.getType() == 1) {
result = NETTYPE_WIFI;
} else if (localNetworkInfo.getType() == 0) {
String subTypeName = localNetworkInfo.getSubtypeName()
.toUpperCase();
if (subTypeName.indexOf("GPRS") > 1) {
result = NETTYPE_MOBILE_GPRS;
} else if (subTypeName.indexOf("EDGE") > 1) {
result = NETTYPE_MOBILE_EDGE;
} else {
result = NETTYPE_MOBILE_3G;
}
} else {
result = NETTYPE_UNKNOW;
}
} else if (localNetworkInfo.getState() == NetworkInfo.State.CONNECTING) {
result = NETTYPE_UNKNOW;
}
return result;
}