劳驾怎么判断手机数据连接已启用

劳驾如何判断手机数据连接已启用?
不论当前使用何种网络,只需要知道手机设置里(或者下滑的快捷图标里)是否已开启了
  数据连接(启用通过移动网络访问数据)

我测试的情况 当前使用的是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应该已经满足需求了吧。