设为首页 收藏本站
查看: 1325|回复: 0

[经验分享] network: Android 网络判断(wifi、3G与其他)(转)

[复制链接]

尚未签到

发表于 2015-10-1 11:38:20 | 显示全部楼层 |阅读模式
  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.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;   
    }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-121281-1-1.html 上篇帖子: 商务领航定制网关1-2wifi设置 下篇帖子: 802.11(wifi)的MAC层功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表