【问题标题】:How to distinguish between different wifi networks?如何区分不同的wifi网络?
【发布时间】:2013-08-28 17:10:48
【问题描述】:

如果范围内有两个 wifi 网络都具有相同的 SSID、安全类型和密码,是否有可用的 ID 来区分它们?有没有办法在android中获取该ID?

【问题讨论】:

    标签: java android wifi android-networking


    【解决方案1】:

    您可以通过BSSID 区分它们 - 如果有人不分配固定的MAC 地址,他们肯定会有不同的(唯一)MAC 地址。

    他们也可以在不同的频道上。我认为如果两个网络具有相同的SSID、相同的频道和相同的BSSID,这是不可能的。

    【讨论】:

    • 所以我应该只检查BSSIDBSSIDSSID 和频道或MAC?哪个总是正常工作?
    • 我认为检查 BSSID 就足够了,但您仍然可以检查频道。
    【解决方案2】:

    您可以尝试从发送网络路由器/AP 中提取 MAC 地址。这个地址是唯一的。

    【讨论】:

      【解决方案3】:

      使用 getSubtype()

      查看幻灯片 9 here:

      ConnectivityManager mConnectivity = null;
      TelephonyManager mTelephony = null;
      // Skip if no connection, or background data disabled
      NetworkInfo info = mConnectivity.getActiveNetworkInfo();
      if (info == null || !mConnectivity.getBackgroundDataSetting()) {
          return false;
      }
      
      // Only update if WiFi or 3G is connected and not roaming
      int netType = info.getType();
      int netSubtype = info.getSubtype();
      if (netType == ConnectivityManager.TYPE_WIFI) {
          return info.isConnected();
      } else if (netType == ConnectivityManager.TYPE_MOBILE
          && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS
          && !mTelephony.isNetworkRoaming()) {
              return info.isConnected();
      } else {
          return false;
      }
      

      【讨论】:

      • getSubtype() 返回什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      相关资源
      最近更新 更多