使用Android附帶的ConnectivityManager類。
有時候連接了wifi,但是這個wifi不能上網。可以通過ping百度網站來判斷是否可以上網。
也可以使用get請求訪問百度。如果get請求成功,就意味著可以上網了。
判斷網絡是否連接。
//?檢查?全部?網絡?連接,?WIFI?還是?可動的
公?靜電?布爾?isNetworkAvailable(final?語境?上下文)?{
布爾?hasWifoCon?=?假的;
布爾?hasMobileCon?=?假的;
ConnectivityManager?cm?=?(ConnectivityManager)?context . getsystem service(context。連通性_服務);
NetworkInfo[]?netInfos?=?cm . getallnetworkinfo();
為了什麽?(NetworkInfo?網?:?netInfos)?{
字符串?類型?=?net . get typename();
如果?(type.equalsIgnoreCase("WIFI "))?{
LevelLogUtils.getInstance()。我(標簽,?“得到了嗎?Wifi?連接”);
如果?(net.isConnected())?{
hasWifoCon?=?真實;
}
}
如果?(type.equalsIgnoreCase("MOBILE "))?{
LevelLogUtils.getInstance()。我(標簽,?“得到了嗎?手機?連接”);
如果?(net.isConnected())?{
hasMobileCon?=?真實;
}
}
}
回歸?hasWifoCon?||?hasMobileCon
}用ping判斷互聯網是否可以請求成功。
//?網絡?可用?不能?確保?互聯網?是嗎?有空的
公?靜電?布爾?isNetWorkAvailable(final?語境?上下文)?{
運行時?運行時?=?runtime . get runtime();
試試?{
流程?pingProcess?=?runtime.exec("/system/bin/ping?-c?1?www . Baidu . com”);
int?exitCode?=?ping process . wait for();
回歸?(exitCode?==?0);
}?接住?(例外?e)?{
e . printstacktrace();
}
回歸?假的;
}