Android里判断是否可以上网,常用的是如下方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* 检测网络是否连接
*
* @return
*/
private
boolean
isNetworkAvailable() {
// 得到网络连接信息
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 去进行判断网络是否连接
if
(manager.getActiveNetworkInfo() !=
null
) {
return
manager.getActiveNetworkInfo().isAvailable();
}
return
false
;
}
|
但是,有时候我们连接上一个没有外网连接的WiFi或者需要输入账号和密码才能链接外网的网络,就会出现虽然网络可用,但是外网却不可以访问。针对这种情况,一般的解决办法就是ping一个外网,如果能ping通就说明可以真正上网,代码如下
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
31
32
33
34
35
|
*
@author
sichard
*
@category
判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
*
@return
*/
public
static
final
boolean
ping() {
String result =
null
;
try
{
String ip =
"www.baidu.com"
;
// ping 的地址,可以换成任何一种可靠的外网
Process p = Runtime.getRuntime().exec(
"ping -c 3 -w 100 "
+ ip);
// ping网址3次
// 读取ping的内容,可以不加
InputStream input = p.getInputStream();
BufferedReader in =
new
BufferedReader(
new
InputStreamReader(input));
StringBuffer stringBuffer =
new
StringBuffer();
String content =
""
;
while
((content = in.readLine()) !=
null
) {
stringBuffer.append(content);
}
Log.d(
"------ping-----"
,
"result content : "
+ stringBuffer.toString());
// ping的状态
int
status = p.waitFor();
if
(status ==
0
) {
result =
"success"
;
return
true
;
}
else
{
result =
"failed"
;
}
}
catch
(IOException e) {
result =
"IOException"
;
}
catch
(InterruptedException e) {
result =
"InterruptedException"
;
}
finally
{
Log.d(
"----result---"
,
"result = "
+ result);
}
return
false
;
|
推推族,免费得门票,游景区:www.tuituizu.com
结伴旅游,一个免费的交友网站:www.jieberu.com