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; }