读书人

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

发布时间: 2013-10-30 12:56:21 作者: rapoo

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

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

读书人网 >Android

热点推荐