劳驾怎么判断手机数据连接已启用
劳驾如何判断手机数据连接已启用?
不论当前使用何种网络,只需要知道手机设置里(或者下滑的快捷图标里)是否已开启了
数据连接(启用通过移动网络访问数据)
我测试的情况 当前使用的是WIFI, 但是无论手机的数据连接是否被勾选
NetworkInfo 里各个参数都不变啊
------解决方案--------------------
NetworkInfo一般用来判断是否有网络连接,可以分别判断是否有WIFI或者移动网络。你需要的应该是判断是否有移动网络吧,而不是想知道这个选项是打开还是关闭吧?
------解决方案--------------------
没有idea,mark下。
------解决方案--------------------
ConnectivityManager类中有隐藏的函数可以判断移动数据网络的状态和开启,可以用反射获取
不过这种API不稳定,没准备什么时候给咔嚓掉了~或者你自己仿照源码自己写一个函数~
------解决方案--------------------
1L应该已经满足需求了吧。
不论当前使用何种网络,只需要知道手机设置里(或者下滑的快捷图标里)是否已开启了
数据连接(启用通过移动网络访问数据)
我测试的情况 当前使用的是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";
}
------解决方案--------------------
没有idea,mark下。
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;
}
------解决方案--------------------
ConnectivityManager类中有隐藏的函数可以判断移动数据网络的状态和开启,可以用反射获取
不过这种API不稳定,没准备什么时候给咔嚓掉了~或者你自己仿照源码自己写一个函数~
------解决方案--------------------
1L应该已经满足需求了吧。