android判断连接的wifi是否有网络。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
public static int getNetWorkStatus(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager != null) { NetworkInfo networkInfo = connectivityManager .getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { return NETWORK_WIFI_CONNECTION; } return NETWORK_MOBILE_CONNECTION; } } return NETWORK_DISCONNECTION; }
如果只是想检测网络是否连接,则直接使用 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