Android检查网络状态步骤

android 如何检查网络连接状态,是android开发中一个常见的问题。

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

<span style="font-size:24px;"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> </span>

1)判断是否有网络连接

<span style="font-size:24px;">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;
} </span>

2)判断WIFI网络是否可用

<span style="font-size:24px;">public boolean isWifiConnected(Context context) {
   if (context != null) {
         ConnectivityManager mConnectivityManager = (ConnectivityManager) context
      .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWiFiNetworkInfo = mConnectivityManager .getNetworkInfo(ConnectivityManager.TYPE_WIFI); //WIFI
        if (mWiFiNetworkInfo != null) {
          return mWiFiNetworkInfo.isAvailable();
          }
      }
      return false;
} </span>

3)判断MOBILE网络是否可用

<span style="font-size:24px;">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;
} </span>

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

<span style="font-size:24px;">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;
} </span>

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

ConnectivityManager有四个主要任务:

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

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

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

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

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

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

<span style="font-size:24px;">onnectionReceiver = new BroadcastReceiver() {
@Override
   public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
       NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
       NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
      if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
       Log.i(TAG, "unconnect");
       // unconnect network
        }else {
        // connect network
        }
    }
}; </span>

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

<span style="font-size:24px;">IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connectionReceiver, intentFilter); </span>

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

<span style="font-size:24px;">if (connectionReceiver != null) {
  unregisterReceiver(connectionReceiver);
} </span>

在测试中遇到过这样的状况,将一个当前连接wifi的路由设备关闭,但是程序并没有捕捉到unconnect network,可能是因为手机设备立刻连接另一个路由设备了

Android 监控网络状态

<span style="font-size:24px;">public static boolean isNetworkAvailable(Context context) {
      ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
       Log.i("NetWorkState", "Unavailabel");
        return false;
      } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
        for (int i = 0; i < info.length; i++) {
          if (info[i].getState() == NetworkInfo.State.CONNECTED) {
          Log.i("NetWorkState", "Availabel");
          return true;
         }
      }
     }
   }
    return false;
} </span>

上面这个方法就是判断网络是否连接的代码,返回true表示有网络,返回false表示无网络。 在Android网络应用程序开发中,经常要判断网络连接是否可用,因此经常有必要监听网络状态的变化。android的网络状态监听可以用BroadcastReceiver来接收网络状态改变的广 播,具体实现如下

<span style="font-size:24px;">@Override
public void onReceive(Context context, Intent intent) {
   Log.e(TAG, "网络状态改变");
   boolean success = false;
  //获得网络连接服务
    ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    // State state = connManager.getActiveNetworkInfo().getState();
    State state = connManager.getNetworkInfo( ConnectivityManager.TYPE_WIFI).getState(); // 获取网络连接状态
    if (State.CONNECTED == state) { // 判断是否正在使用WIFI网络
     success = true;
      }
     state = connManager.getNetworkInfo(
     ConnectivityManager.TYPE_MOBILE).getState(); // 获取网络连接状态
     if (State.CONNECTED != state) { // 判断是否正在使用GPRS网络
       success = true;
     }
     if (!success) {
      Toast.makeText(LocationMapActivity.this, "您的网络连接已中断", Toast.LENGTH_LONG).show();
     }
} </span>
<span style="font-size:24px;">/注册网络监听
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
//在Activity中的onDestroy中:'
unregisterReceiver(mNetworkStateReceiver); //取消监听 </span>

很多朋友在android开发中,都会遇到手机网络类型判断,因为就目前的android平台手机来说:可能会存在4中状态

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

2.使用WIFI上网

3.CMWAP(中国移动代理)

4.CMNET上网

这四种状态,如果没有网络,肯定是无法请求Internet了,如果是wap就需要为手机添加中国移动代理,关于为手机添加中国移动的代理!

下面是网络判断的方法:

<span style="font-size:24px;">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;
} </span>

时间: 2024-07-31 07:44:07

Android检查网络状态步骤的相关文章

android 检查网络连接状态实现步骤

获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 1)判断是否有网络连接 复制代码 代码如下: public boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager mConn

Android 监控网络状态

Html代码 public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) { Log.i("NetWorkState", "Unavailabe

Android判断网络状态方法详解

Android 判断网络状态这一应用技巧在实际应中是比较重要的.那么,在Android操作系统中,如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析. 1.public class ConnectionChangeReceiverextends BroadcastReceiver 2.{ [email protected] 4.public void onReceive( Context context,Intent intent ) 5.{ 6.Conn

Android获取网络状态

Android获取网络状态 学习自 https://developer.android.google.cn/reference/android/net/ConnectivityManager http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html Overview 在做Android app的时候,网络的状态可能会经常的变化,当用户当前没有网络的时候,我们要保证程序不崩溃,而在当用户使用流量的话,则需要确保,在进行耗流量的操

android——判断网络状态

平常我们玩qq的时候我们没联网 ,qq上面回显示"网络连接不给力,请检查网络连接"那么它是 通过什么方式判断网络是否连接的呢? 下面将写个案例展示如何检查网络连接状态的 由于我们这里只是测试下所以我们的项目只是简单的实现点击一个按钮判断设备网络是否连接如果 网络已连接则弹出一个消息框提示"网络通畅"反之则提示"您的网络真的连接 了吗" 1.新建一个android项目textNet(设备版本为4.4.2) 2.打开activity_main.xml

android之网络状态的判断

第一步:接收状态信息 (1.写setActivity方法是为了获得界面的控件设定是否隐藏 2.此类继承BroadcastReceiver,作用是重新广播接收者) import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityMana

AFNetworkReachabilityManager检查网络状态

1.开启监听    [[AFNetworkReachabilityManager sharedManager] startMonitoring]; 2.[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusNotRe

Android - 判断网络状态

Android手机同时支持WIFI和3G, 判断网络连接, 判断网络类型(WIFI或3G). 权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 判断网络连接 /** * 判断网络是否可用, 在使用网络请求是预先使用此方法进行检查, 以节省资源. * * @return 可用状态 */ public static boolean isNetAvailable() { C

Android检测网络状态,判断当前网络是否可用

用户手机当前网络可用:WIFI.2G/3G网络,用户打开与不打开网络,和是否可以用是两码事.可以使用指的是:用户打开网络了并且可以连上互联网进行上网. 检测当前网络是否可用,代码如下: /** * 检测当的网络(WLAN.3G/2G)状态 * @param context Context * @return true 表示网络可用 */ public static boolean isNetworkAvailable(Context context) { ConnectivityManager