XiYO

现实不同情弱者,命运不相信眼泪。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

检查网络连接的方法

Posted on 2012-02-29 09:14  XiYO  阅读(1062)  评论(0编辑  收藏  举报

protected boolean isConnectInternet()
    {
        ConnectivityManager mConnectivity=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        TelephonyManager mTelephony=(TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
        //检查网路连接,如果无网络可用,就不需要进行联网操作
        NetworkInfo info=mConnectivity.getActiveNetworkInfo();
        if(info==null || !mConnectivity.getBackgroundDataSetting())
        {
            return false;
        }
        
        //判断网路连接类型,只有在3G或wifi里进行数据更新
        int netType=info.getType();
        int netSubType=info.getSubtype();
        
        if(netType==ConnectivityManager.TYPE_WIFI)
        {
            return info.isConnected();
        }else if(netType==ConnectivityManager.TYPE_MOBILE
                && netSubType==TelephonyManager.NETWORK_TYPE_UMTS
                && !mTelephony.isNetworkRoaming())
        {
            return info.isConnected();
        }else {
            return false;
        }
    }

 

/**
     * 判断网络状态是否可用
     *
     * @return true: 网络可用 ; false: 网络不可用
     */
    public boolean isConnectInternet() {

        ConnectivityManager conManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = conManager.getActiveNetworkInfo();
        if (networkInfo != null) { // 注意,这个判断一定要的哦,要不然会出错
            return networkInfo.isAvailable();
        }
        return false;
    }

 

在 AndroidManifest.xml 中加上 检查网络的权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

/**
* 获取网络类型
*
* NETWORK_TYPE_CDMA 网络类型为CDMA
* NETWORK_TYPE_EDGE 网络类型为EDGE
* NETWORK_TYPE_EVDO_0 网络类型为EVDO0
* NETWORK_TYPE_EVDO_A 网络类型为EVDOA
* NETWORK_TYPE_GPRS 网络类型为GPRS
* NETWORK_TYPE_HSDPA 网络类型为HSDPA
* NETWORK_TYPE_HSPA 网络类型为HSPA
* NETWORK_TYPE_HSUPA 网络类型为HSUPA
* NETWORK_TYPE_UMTS 网络类型为UMTS
*
* 在中国,联通的3G为UMTS或HSDPA,移动和联通的2G为GPRS或EGDE,电信的2G为CDMA,电信的3G为EVDO
*/