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. bunoj 34990(hash)

    传送门:Justice String 题意:有两个串A,B,问是否存在A的一个子串S,S和B的长度相等,最多有2个字符不同.如果有多个,输出其实下标最小S的下标,没有输出-1. 分析:从A每个位置开始 ...

  2. latex命令替换之\newcommand

    有时候我们在用latex写文档的时候不想写很长的命令,那么我们自己定义一个新的命令来替换一段代码. 举例如下: \usepackage{booktabs} \usepackage{multirow} ...

  3. CI(codeigniter)框架,routes.php设置正确,但是显示服务器错误,是__construct少写了一个下划线

    今天弄了一下CI框架,大概看了一下文档,感觉CI框架非常精简,但是在做的时候遇到了问题,CI文档中提供了一个新闻系统的例子,所有工作都做完了,在浏览器中打开相对应的url是,却显示“服务器错误”,一点 ...

  4. HDU ACM 1054 Strategic Game 二分图最小顶点覆盖?树形DP

    分析:这里使用树形DP做. 1.最小顶点覆盖做法:最小顶点覆盖 == 最大匹配(双向图)/2. 2.树形DP: dp[i][0]表示i为根节点,而且该节点不放,所需的最少的点数. dp[i][1]表示 ...

  5. 《Java并发编程实战》第十六章 Java内存模型 读书笔记

    Java内存模型是保障多线程安全的根基,这里不过认识型的理解总结并未深入研究. 一.什么是内存模型,为什么须要它 Java内存模型(Java Memory Model)并发相关的安全公布,同步策略的规 ...

  6. hdu5171(矩阵快速幂)

    传送门:GTY's birthday gift 题意:GTY的朋友ZZF的生日要来了,GTY问他的基友送什么礼物比较好,他的一个基友说送一个可重集吧!于是GTY找到了一个可重集S,GTY能使用神犇魔法 ...

  7. vim删除^M

    1.进入命令模式.vim的命令模式,就是在编辑模式下输入":",光标就会跳到屏幕最后一行,并在那里显示冒号,此时就已经进入命令模式. 命令模式的内容均显示在屏幕的最后一行,按下回车 ...

  8. poj2236(并查集)

    题目连接 题意:一张图上分布着n台坏了的电脑,并知道它们的坐标.两台修好的电脑如果距离<=d就可以联网,也可以通过其他修好的电脑间接相连.给出操作“O x”表示修好x,给出操作“S x y”,请 ...

  9. UpdatePanel Repeater内LinkButton造成页面刷新问题

    本意:UpdatePanel1内嵌的Repeater1中带有LinkButton1, 将由LinkButton1触发页面的UpdatePanel2更新,而不需要更新UpdatePanel1,当然也不需 ...

  10. 【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件

    本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...