Android 手机的几种网络
获取网络状态

一、Android 手机的几种网络

MOBILE(数据流量)
WIFI(wifi)

二、获取网络状态

2.1 相关类:

1
2
3
4
5
ConnectivityManager:
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo:
connectionManager.getActiveNetworkInfo();

2.2 NetworkInfo 的关键方法

getDetailedState():获取详细状态。
getExtraInfo():获取附加信息。
getReason():获取连接失败的原因。
getType():获取网络类型(一般为移动或Wi-Fi)。
getTypeName():获取网络类型名称(一般取值“WIFI”或“MOBILE”)。
isAvailable():判断该网络是否可用。
isConnected():判断是否已经连接。
isConnectedOrConnecting():判断是否已经连接或正在连接。
isFailover():判断是否连接失败。
isRoaming():判断是否漫游

2.3 几种上网方式

当用 WIFI 上的时候,getType 是WIFI,getExtraInfo 是空的。
当用 MOBILE(数据流量)上的时候,getType 是 MOBILE 。
用移动 CMNET 方式,getExtraInfo的值是 cmnet。
用移动 CMWAP 方式,getExtraInfo的值是 cmwap,但是不在代理的情况下访问普通的网站访问不了。
用联通 3gwap 方式,getExtraInfo的值是 3gwap。
用联通 3gnet 方式,getExtraInfo的值是 3gnet。
用联通 uniwap 方式,getExtraInfo的值是 uniwap。
用联通 uninet 方式,getExtraInfo的值是 uninet。

以上参考自
http://www.inthumb.com/c/learnandroid/article?id=576&category_id=4.1
http://www.eoeandroid.com/thread-167333-1-1.html?_dsign=6c32dbf4
http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html

2.4 特别的CMCC

[问题来源] http://www.eoeandroid.com/thread-182792-1-1.html?_dsign=d7ad2a6a
[解决方案] http://zhidao.baidu.com/question/560189543835675044.html?fr=iks&word=android+%C5%D0%B6%CFcmcc&ie=gbk
当连接上但却未登录CMCC时:

LOG日志打印:连接不可达到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class IpAddrThread extends Thread {
@Override
public void run() {
try {
Process p = Runtime.getRuntime().exec("ping -c 3 -w 5 " + "202.108.22.5");
int status = p.waitFor();
if (status == 0) {
Log.e("STATUS","连接正常");
// pass
// mPingIpAddrResult = "连接正常";
} else {
Log.e("STATUS","连接不可达到");
// Fail:Host unreachable
// mPingIpAddrResult = "连接不可达到";
}
} catch (UnknownHostException e) {
Log.e("STATUS","出现未知连接");
// Fail: Unknown Host
// mPingIpAddrResult = "出现未知连接";
} catch (IOException e) {
Log.e("STATUS","连接出现IO异常");
// Fail: IOException
// mPingIpAddrResult = "连接出现IO异常";
} catch (InterruptedException e) {
Log.e("STATUS","连接出现中断异常");
// Fail: InterruptedException
// mPingIpAddrResult = "连接出现中断异常";
}
}
}

经过几次尝试,整理出下表数据

networkTable
networkTable