getAllNetworkInfo检测wifi或移动连接,但从不两者

时间:2013-07-19 13:04:22

标签: android

我有一个使用以下方法检查网络连接的功能:

ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo[] networkInfos = cm.getAllNetworkInfo();

但是,一旦连接了Wifi网络,移动网络将被视为DISCONNECTED

我怎么知道两个网络是否都已连接?

提前感谢您的时间。

3 个答案:

答案 0 :(得分:4)

试试这个:

ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
NetworkInfo wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobileNet = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(netInfo!=null){
  if(mobileNet.isConnected()){
    System.out.println("Mobile Network is connected");

  }
  if(wifi.isConnected()){
    System.out.println("Wi-fi Network is connected");
  }

}

答案 1 :(得分:1)

  

我怎么知道两个网络是否都已连接?

您可以创建肯定的方法来检查两种类型e.q。

if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
   // do your stuff
}
if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
   // do your stuff
}

但在Android操作系统中,如果Wifi和移动网络可用(并且您可以连接),操作系统默认选择Wifi,以便将Wifi用作活动网络连接。

答案 2 :(得分:0)

Android设备只能有一个连接! (WiFi或手机)

  1. 如果WiFi可用 - 系统将尝试连接到它
  2. 如果WiFi不可用且移动设备已开启 - 系统将尝试连接到移动设备
  3. 当系统连接到WiFi时 - 在您尝试连接之前,您无法确定移动设备是否正常工作。
  4. Moble相同