admin管理员组文章数量:1122852
现在是这么个需求,接入wifi时,但是却上不了网,这时app会卡在欢迎页面,卡主约3-5分钟,有时候还发生崩溃错误,查看代码,原来的代码如下:
最后确定就是在waitFor()函数卡住了。
查询原因,确定在 ping命令上,-w 3000没执行,这条命令语句不好使。
将-w 3000去掉,就变成"ping -c 1"执行时间却缩短到10s。
可能怀疑是个别android机器系统版本不一致造成的,又尝试了红米,结果是一样的。
不知道为什么-w 3000在linux下不执行,在windows下试了好使。手里没有linux机器,也没办法试那个命令。
最后用httpClient请求到百度看返回码解决这个问题,解决代码:
//检测是否能够上网,
public static boolean isConnectNetwork() {
// HttpClient连接对象
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
// HttpGet连接对象使用get方式请求
HttpGet myget = new HttpGet("http://www.baidu/");
HttpResponse response = null;
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
tools.debugger("请求开始时间", df.format(new Date()));
response = client.execute(myget);
} catch (ClientProtocolException e) {
e.printStackTrace();
tools.debugger("读取数据超时", "读取数据超时");
tools.debugger("超时时间", df.format(new Date()));
return false;
} catch (IOException e) {
e.printStackTrace();
tools.debugger("io流出错", "io流出错");
tools.debugger("io流出错时间", df.format(new Date()));
return false;
}
Log.d("响应值为", response.getStatusLine().getStatusCode() + "");
tools.debugger("响应时间", df.format(new Date()));
// 返回值为200,即为服务器成功响应了请求,其余的,则为失败
if (response.getStatusLine().getStatusCode() == 200) {
tools.debugger("请求数据成功", "请求数据成功");
return true;
}
return false;
}
版权声明:本文标题:android连接wifi时,但是无法上网,这个状态的检测办法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1726800745a1167355.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论