Android判断网络连接相关方法

来源:互联网 发布:太阁立志传 mac 编辑:程序博客网 时间:2024/05/19 17:08

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


1.判断是否有网络连接

public boolean isNetworkConnected(Context context) {      if (context != null) {          ConnectivityManager mConnectivityManager = (ConnectivityManager) context                  .getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();          if (mNetworkInfo != null) {              return mNetworkInfo.isAvailable();          }      }      return false;  }

2.判断WIFI网络是否可用

public boolean isWifiConnected(Context context) {      if (context != null) {          ConnectivityManager mConnectivityManager = (ConnectivityManager) context                  .getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo mWiFiNetworkInfo = mConnectivityManager                  .getNetworkInfo(ConnectivityManager.TYPE_WIFI);          if (mWiFiNetworkInfo != null) {              return mWiFiNetworkInfo.isAvailable();          }      }      return false;  }

3.判断MOBILE网络是否可用

public boolean isMobileConnected(Context context) {      if (context != null) {          ConnectivityManager mConnectivityManager = (ConnectivityManager) context                  .getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo mMobileNetworkInfo = mConnectivityManager                  .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);          if (mMobileNetworkInfo != null) {              return mMobileNetworkInfo.isAvailable();          }      }      return false;  }

4.获取当前网络连接的类型信息

public static int getConnectedType(Context context) {      if (context != null) {          ConnectivityManager mConnectivityManager = (ConnectivityManager) context                  .getSystemService(Context.CONNECTIVITY_SERVICE);          NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();          if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {              return mNetworkInfo.getType();          }      }      return -1;  }

在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒。一般可以通过ConnectivityManager来完成该工作。

ConnectivityManager有四个主要任务:

1、监听手机网络状态(包括GPRS,WIFI, UMTS等)

2、手机状态发生改变时,发送广播

3、当一个网络连接失败时进行故障切换

4、为应用程序提供可以获取可用网络的高精度和粗糙的状态

当我们要在程序中监听网络状态时,只要一下几个步骤即可:

1、定义一个Receiver重载其中的onReceive函数,在其中完成所需要的功能,如根据WIFI和GPRS是否断开来改变空间的外观

connectionReceiver = new BroadcastReceiver() {      @Override   public void onReceive(Context context, Intent intent) {        // TODO Auto-generated method stub        State wifiState = null;          State mobileState = null;          ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);          wifiState = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();          mobileState = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();          if (wifiState != null && mobileState != null                  && State.CONNECTED != wifiState                   && State.CONNECTED == mobileState) {              // 手机网络连接成功              //networkType = 0;            Log.d("NetWorkTester", "手机网络连接成功.");        } else if (wifiState != null && mobileState != null                  && State.CONNECTED != wifiState                  && State.CONNECTED != mobileState) {              // 手机没有任何的网络              //networkType = -1;            Log.d("NetWorkTester", "手机没有任何的网络.");        } else if (wifiState != null && State.CONNECTED == wifiState) {              // 无线网络连接成功              //networkType = 1;            Log.d("NetWorkTester", "无线网络连接成功.");        }      }  }};

2、在适当的地方注册Receiver,可以在程序中注册,在onCreate中调用如下函数即可:

IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(connectionReceiver, intentFilter);

3、在适当时取消注册Receiver,可以在程序中取消,在onDestroye中调用如下函数即可:

if (connectionReceiver != null) {   unregisterReceiver(connectionReceiver);}

下面是网络判断的方法:

      1.无网络(这种状态可能是因为手机停机,网络没有开启,信号不好等原因)

      2.使用WIFI上网

      3.CMWAP(中国移动代理)

      4.CMNET上网

 这四种状态,如果没有网络,肯定是无法请求Internet了,如果是wap就需要为手机添加中国移动代理,关于为手机添加中国移动的代理,请到http://www.2cto.com/kf/201111/112100.html 这里写有关于添加中国移动代理的例子!

/**     * @author sky     * Email vipa1888@163.com     * QQ:840950105     * 获取当前的网络状态  -1:没有网络  1:WIFI网络2:wap网络3:net网络     * @param context     * @return     */     public static int getAPNType(Context context){         int netType = -1;          ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);         NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();                  if(networkInfo==null){             return netType;         }         int nType = networkInfo.getType();         if(nType==ConnectivityManager.TYPE_MOBILE){             Log.e("networkInfo.getExtraInfo()", "networkInfo.getExtraInfo() is "+networkInfo.getExtraInfo());             if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet")){                 netType = CMNET;             }             else{                 netType = CMWAP;             }         }         else if(nType==ConnectivityManager.TYPE_WIFI){             netType = WIFI;         }         return netType; }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 五菱仪表盘不亮怎么办 瞒着老婆欠了钱怎么办 m8螺丝牙距孔距差一个毫米怎么办 内丝弯头坏了怎么办 螺纹底孔打大了怎么办 内螺纹止规过了怎么办 牌照螺丝装错了怎么办 帽式扳手大了怎么办 内六角扳手小了怎么办 内六角扳手不够大怎么办? 苹果6螺丝拧花了怎么办 苹果电脑螺丝拧花了怎么办 苹果螺丝滑牙了怎么办 苹果7螺丝滑丝了怎么办 外六角螺丝滑牙怎么办 六角螺帽滑丝了怎么办 内六角螺丝滑头了怎么办 内六角螺丝滑失了怎么办 内六角螺钉滑了怎么办 三视图看不出来怎么办 小猫断奶以后母猫涨奶怎么办 手机螺丝滑丝了怎么办 螺丝孔道滑丝了怎么办 螺丝生锈了拧不下来怎么办 钣金加工六角网孔变形怎么办 外六角螺帽滑丝怎么办 内六角螺丝螺帽滑丝怎么办 一字螺丝钉脱扣拧不下来怎么办 一字螺丝拧花了怎么办 小螺丝卸不下来怎么办 机油螺丝滑丝了怎么办 刚滑双板膝盖滑的疼怎么办 lv包真皮弄脏了怎么办 lv包压变形了怎么办 lv的包包被压了怎么办 固态硬盘太小了怎么办 联想笔记本网络连接不可用怎么办 联想g50玩dnf卡怎么办 手机有wifi电脑没有网怎么办 电脑网卡被禁用了怎么办 win8系统装win7蓝屏怎么办