Android 判断是否有外网连接
Android里判断是否可以上网,常用的是如下方法:
/**
*检测网络是否连接
*
*@return
*/
privatebooleanisNetworkAvailable(){
//得到网络连接信息
ConnectivityManagermanager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//去进行判断网络是否连接
if(manager.getActiveNetworkInfo()!=null){
returnmanager.getActiveNetworkInfo().isAvailable();
}
returnfalse;
}
有时候我们连接上一个没有外网连接的WiFi或者有线就会出现这种极端的情况,目前AndroidSDK还不能识别这种情况,一般的解决办法就是ping一个外网。
/*@authorsuncat
*@category判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
*@return
*/
publicstaticfinalbooleanping(){
Stringresult=null;
try{
Stringip="www.baidu.com";//ping的地址,可以换成任何一种可靠的外网
Processp=Runtime.getRuntime().exec("ping-c3-w100"+ip);//ping网址3次
//读取ping的内容,可以不加
InputStreaminput=p.getInputStream();
BufferedReaderin=newBufferedReader(newInputStreamReader(input));
StringBufferstringBuffer=newStringBuffer();
Stringcontent="";
while((content=in.readLine())!=null){
stringBuffer.append(content);
}
Log.d("------ping-----","resultcontent:"+stringBuffer.toString());
//ping的状态
intstatus=p.waitFor();
if(status==0){
result="success";
returntrue;
}else{
result="failed";
}
}catch(IOExceptione){
result="IOException";
}catch(InterruptedExceptione){
result="InterruptedException";
}finally{
Log.d("----result---","result="+result);
}
returnfalse;
}