检查网络连接的android

检查网络连接的android

问题描述:

在我的应用程序,这是我在模拟器中测试我的电脑连接... 这是由模拟器引起还是其他的东西?检查网络连接的android

如果这不是检查网络连接的正确方法,我该怎么做?

+0

在飞行模式下设置模拟器后检查此代码 – vipin 2012-04-04 11:05:43

+0

您尝试过'isAvailable()'或'isConnected()'吗? – olix20 2012-04-04 11:06:15

+0

@vipin,在飞行中它在两种情况下都返回false ... – amp 2012-04-04 11:11:42

最好是(1)通过在上下文,使得每一次活动都可以调用这个函数,和(2)使该功能静:

public boolean isNetworkOnline() { 
    boolean status=false; 
    try{ 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getNetworkInfo(0); 
     if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) { 
      status= true; 
     }else { 
      netInfo = cm.getNetworkInfo(1); 
      if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED) 
       status= true; 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
     return false; 
    } 
    return status; 

    } 
+0

它像以前一样返回true ... – amp 2012-04-04 11:20:01

+0

代码是正确的,它可以在任何设备上正常工作 – Nishant 2012-04-04 11:22:05

+0

但是我需要在模拟器上测试...一些替代? – amp 2012-04-04 11:34:21

要获得getActiveNetworkInfo()来工作,你需要将以下内容添加到清单中。

1. uses-permission android:name="android.permission.INTERNET" 
2. uses-permission 
    android:name="android.permission.ACCESS_NETWORK_STATE" 

更好地使用netInfo.isConnected(),而不是netInfo.isConnectedOrConnecting

也试试这个

Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_MOBILE) 

Context.getSystemService(Context.CONNECTIVITY_SERVICE).requestRouteToHost(TYPE_WIFI, int hostAddress) 

就我而言,我关掉Wifi,但忘记了关闭数据/移动网络连接。一旦我这样做了,这个线程的原始文章中的代码为我工作。

总结一下:

  1. 进入设置
  2. 关闭WiFi
  3. 进入设置 - >数据使用
  4. 关闭移动数据

Settings

Settings->Data Usage

这是我如何把它一起在一个项目:

清单文件:

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

静态函数:

public static boolean isNwConnected(Context context) { 
    if (context == null) { 
     return true; 
    } 
    ConnectivityManager connectivityManager = 
     (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo nwInfo = connectivityManager.getActiveNetworkInfo(); 
    if (nwInfo != null && nwInfo.isConnectedOrConnecting()) { 
     return true; 
    } 
    return false; 
} 

我们可以通过检查Internet连接来连接状态低于功能。 Google Android已更新Android API的功能来检查网络状态。现在在Android最新的API中,getAllNetworkInfo()已弃用。但getAllNetworks()函数仅适用于Build.VERSION.SDK_INT> = 21。我已经为所有情况编写了代码。

要检查互联网连接,您可以调用此函数。

public static boolean checkInternetConnection(Context context) { 
     ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity == null) { 
     return false; 
    } else if(Build.VERSION.SDK_INT >= 21){ 
     Network[] info = connectivity.getAllNetworks(); 
     if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i] != null && connectivity.getNetworkInfo(info[i]).isConnected()) { 
        return true; 
       } 
      } 
     } 
    } 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; 
       } 
      } 
     } 
     final NetworkInfo activeNetwork = connectivity.getActiveNetworkInfo(); 
     if (activeNetwork != null && activeNetwork.isConnected()) { 
      return true; 
     } 
    } 

    return false; 
}