public class NetworkProber { 



/** 

* 网络是否可用 



* @param activity 

* @return 

*/ 

public static boolean isNetworkAvailable(Context context) { 

ConnectivityManager connectivity = (ConnectivityManager) context 

.getSystemService(Context.CONNECTIVITY_SERVICE); 

if (connectivity == null) { 

} else { 

NetworkInfo[] info = connectivity.getAllNetworkInfo(); 

if (info != null) { 

for (int i = 0; i < info.length; i++) { 

if (info[i].getState() == NetworkInfo.State.CONNECTED) { 

return true; 









return false; 





/** 

* Gps是否打开 



* @param context 

* @return 

*/ 

public static boolean isGpsEnabled(Context context) { 

LocationManager locationManager = ((LocationManager) context 

.getSystemService(Context.LOCATION_SERVICE)); 

List<String> accessibleProviders = locationManager.getProviders(true); 

return accessibleProviders != null && accessibleProviders.size() > 0; 





/** 

* wifi是否打开 

*/ 

public static boolean isWifiEnabled(Context context) { 

ConnectivityManager mgrConn = (ConnectivityManager) context 

.getSystemService(Context.CONNECTIVITY_SERVICE); 

TelephonyManager mgrTel = (TelephonyManager) context 

.getSystemService(Context.TELEPHONY_SERVICE); 

return ((mgrConn.getActiveNetworkInfo() != null && mgrConn 

.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel 

.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS); 





/** 

* 推断当前网络是否是wifi网络 

* if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { //推断3G网 



* @param context 

* @return boolean 

*/ 

public static boolean isWifi(Context context) { 

ConnectivityManager connectivityManager = (ConnectivityManager) context 

.getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 

if (activeNetInfo != null 

&& activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) { 

return true; 



return false; 





/** 

* 推断当前网络是否是3G网络 



* @param context 

* @return boolean 

*/ 

public static boolean is3G(Context context) { 

ConnectivityManager connectivityManager = (ConnectivityManager) context 

.getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 

if (activeNetInfo != null 

&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) { 

return true; 



return false; 





另外还有两个方法推断网络是否可用:

public static boolean isNetworkAvailable_00(Context context) { 

ConnectivityManager cm = ((ConnectivityManager) context 

.getSystemService(Context.CONNECTIVITY_SERVICE)); 

if (cm != null) { 

NetworkInfo info = cm.getActiveNetworkInfo(); 

if (info != null && info.isConnectedOrConnecting()) { 

return true; 





return false; 





public static boolean isNetworkAvailable_01(Context context) { 

ConnectivityManager cm = (ConnectivityManager) context 

.getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkInfo network = cm.getActiveNetworkInfo(); 

if (network != null) { 

return network.isAvailable(); 



return false; 



更加严谨的写法: 

public static boolean checkNet(Context context) { 



try { 

ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

if (connectivity != null) { 



NetworkInfo info = connectivity.getActiveNetworkInfo(); 

if (info != null && info.isConnected()) { 



if (info.getState() == NetworkInfo.State.CONNECTED) { 

return true; 







} catch (Exception e) { 

return false; 



return false; 

}

network: Android 网络推断(wifi、3G与其它)的更多相关文章

  1. network: Android 网络判断(wifi、3G与其他)

    package mark.zeng; import Java.util.List; import Android.content.Context; import android.location.Lo ...

  2. Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

    随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager  类,用 ...

  3. Android: 网络随时需要在3G和Wifi切换,网络程序需要注意

    平时,3G和WIFI 都开着的时候,Android默认使用Wifi,但现实环境中不可能到处都有wifi,所以手机会经常自动切换网络. 有的时候,手机一开始使用wifi上网,当进入待机后10-30分钟, ...

  4. Android网络类型判断(2g、3g、wifi)

    判断网络类型是wifi,还是3G,还是2G网络,对不同 的网络进行不同的处理,现将判断方法整理给大家,以供参考   说明:下面用到的数据移动2G,联通2G,联通3G,wifi我都已经测试过,暂时手上 ...

  5. 转:Android 判断用户2G/3G/4G移动数据网络

    Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...

  6. Android 判断用户2G/3G/4G移动数据网络

    Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...

  7. Android 网络开发之WIFI

    WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...

  8. iOS开发 - 检测网络状态(WIFI、2G/3G/4G)

    本文转载至 http://blog.csdn.net/wangzi11322/article/details/45580917 检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是 ...

  9. Android 中的WiFi剖析

    Android的WiFi 我们通常看到WiFi的守护进程wpa_supplicant在我们的ps的进程列表中,这个就是我们的wifi守护进程.wpa_supplicant在external/wpa_s ...

随机推荐

  1. 模块化手机project ara之我见

    组装电脑,已被大部分人所熟知,只是像玩具一样组装手机,应该还仅仅是停留在想象.谷歌Project Ara将这一想象一步一步拉进现实,她希望提供一块框架,使用者能够自由地替换摄像头.显示屏.处理器.电池 ...

  2. Java-WebSocket 项目的研究(三) WebSocketClient 类 具体解释

    通过之前两篇文章 Java-WebSocket 项目的研究(一) Java-WebSocket类图描写叙述 Java-WebSocket 项目的研究(二) 小试身手:client连接server并发送 ...

  3. 7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml

     数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...

  4. STL__queue_的应用

    转:http://hi.baidu.com/xiaotiandm/item/bda34511cf9e99098fbde41a 调用的时候要有头文件: #include<stdlib.h> ...

  5. Rudiments 0.42 发布,C++ 常用工具包 - 开源中国社区

    Rudiments 0.42 发布,C++ 常用工具包 - 开源中国社区 Rudiments 0.42 发布,C++ 常用工具包

  6. IBM之MQ使用指南

    随着计算机网络和分布式应用的不断发展.远程消息传递越来越成为应用系统中必不可少的组成部分. 商业消息中间件的出现保证了消息传输的可靠性,高效率和安全性,同一时候也降低了系统的开发周期. 眼下应用最多的 ...

  7. hdu2102(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 分析:bfs求最短时间到达'P'点,不过本题有好几个trick,我都踩到了,自己还是太嫩了... ...

  8. 自己动手写了第三阶段的处理器——教学OpenMIPS处理器蓝图

    我们会继续上传新书<自己动手写处理器>(未公布).今天是第十条.我每星期试试4 从本章開始将一步一步地实现教学版OpenMIPS处理器.本章给出了教学版OpenMIPS的系统蓝图,首先介绍 ...

  9. Java利用httpasyncclient进行异步HTTP请求

    Java利用httpasyncclient进行异步HTTP请求 前段时间有个需求在springmvc mapping的url跳转前完成一个统计的业务.显然需要进行异步的处理,不然出错或者异常会影响到后 ...

  10. STM32串口乱码

    库函数默认8MHz晶振,应根据实际硬件选择 # CMSIS/stm32f10x.h #define HSE_VALUE ((uint32_t)12000000) #if !defined HSE_VA ...