【问题标题】:getAllNetworkInfo detect wifi or mobile connection, but never bothgetAllNetworkInfo 检测 wifi 或移动连接,但从不检测两者
【发布时间】:2013-11-24 16:23:31
【问题描述】:

我有一个检查网络连接的功能:

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

但是,一旦连接了 Wifi 网络,移动网络就会显示为 DISCONNECTED

我如何知道两个网络是否已连接?

提前感谢您的宝贵时间。

【问题讨论】:

  • 您只需要网络连接还是需要获取每个连接的网络详细信息?
  • 我需要通知用户有关移动和 wifi 连接的信息。

标签: android


【解决方案1】:

试试这个:

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");
  }

}

【讨论】:

  • 不抱歉,我已经用过但没有成功...谢谢
【解决方案2】:

我如何知道两个网络是否已连接?

您可以创建确定的方法来检查这两种类型,例如。

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

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

【讨论】:

  • 不抱歉,我已经用过但没有成功...谢谢
【解决方案3】:

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

  1. 如果 WiFi 可用 - 系统将尝试连接到它
  2. 如果 WiFi 不可用且 Mobile 已打开 - 系统将尝试连接到 Mobile
  3. 当系统连接到 WiFi 时 - 在您尝试连接之前,您不能确定 Mobile 会正常工作。
  4. 移动也是如此

【讨论】:

  • 感谢您的回答。但是系统是如何在智能手机顶部同时显示这两个图标的呢?
  • 您使用的是什么设备?安卓版本?您的两个图标是一次(同时)显示数据传输还是仅显示两个网络都已打开?
  • 嗨,安德鲁,很抱歉我迟到了。我使用的是搭载 Android 4.1.2 的 Wiko Cink 5,但无论设备如何,图标的可见性都是一样的。
  • 我已经测试了我的设备,从调试中我可以看到其他连接在打开时不可用。您不能同时拥有不同的连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多