android判断连接的wifi是否有网络。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
public static int getNetWorkStatus(Context context) {
如果只是想偵測網路是否連接,直接使用 isNetworkConnected()如果想偵測網路連通性(是否能存取網路),則 isNetworkConnected() 與 isNetworkOnline() 結合使用
isNetworkConnected()
isNetworkOnline()
private boolean isNetworkConnected() { ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); return (networkInfo != null && networkInfo.isConnected()); } public boolean isNetworkOnline() { Runtime runtime = Runtime.getRuntime(); try { Process ipProcess = runtime.exec("ping -c 1 114.114.114.114"); int exitValue = ipProcess.waitFor(); return (exitValue == 0); } catch (IOException | InterruptedException e) { e.printStackTrace(); } return false; }
註:114.114.114.114 可以改成你信任的網站(例如: www.baidu.com)
個人經驗,不喜勿噴。 。 。 我從來都不管用戶是連的3G、4G還是WIFI,我也不管連上WIFI是否是真的有網,因為這都不重要。 重點在於,使用者的App能否連接到指定的伺服器而已。 So……直接測試和伺服器的連線就好了,在沒有連網的情況下,很快就會拋出異常的。 Try catch一下就知道了。 或專門寫一個測試連線的API。
直接寫個方法 訪問http://www.baidu.com 有資料回傳表示有網 沒資料回傳 或異常表示沒網路。 so
public static int getNetWorkStatus(Context context) {
雷雷如果只是想偵測網路是否連接,直接使用
isNetworkConnected()
如果想偵測網路連通性(是否能存取網路),則
isNetworkConnected()
與isNetworkOnline()
結合使用個人經驗,不喜勿噴。 。 。
我從來都不管用戶是連的3G、4G還是WIFI,我也不管連上WIFI是否是真的有網,因為這都不重要。
重點在於,使用者的App能否連接到指定的伺服器而已。
So……
直接測試和伺服器的連線就好了,在沒有連網的情況下,很快就會拋出異常的。
Try catch一下就知道了。
或專門寫一個測試連線的API。
直接寫個方法 訪問http://www.baidu.com 有資料回傳表示有網 沒資料回傳 或異常表示沒網路。 so