代码之家  ›  专栏  ›  技术社区  ›  noisy

如何使用Android API从Android中获取WiFi网络的名称?

  •  59
  • noisy  · 技术社区  · 15 年前

    我认为我应该使用networkinterface::getdisplayname。我有个名字,但这个名字和我选择要连接的网络时看到的名字不同。

    请帮助…

    [编辑]

    根据Loxley的回答:

    WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
    String name = wifiInfo.getSSID();
    
    3 回复  |  直到 8 年前
        1
  •  41
  •   CaptJak    10 年前

    android.net.wifi.WifiInfo.getSSID ?

        2
  •  22
  •   David    11 年前
    public String getWifiName(Context context) {
        WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        if (manager.isWifiEnabled()) {
           WifiInfo wifiInfo = manager.getConnectionInfo();
           if (wifiInfo != null) {
              DetailedState state = WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState());
              if (state == DetailedState.CONNECTED || state == DetailedState.OBTAINING_IPADDR) {
                  return wifiInfo.getSSID();
              }
           }
        }
        return null;
    }
    
        3
  •  19
  •   Gowthaman M manas.abrol    8 年前

    这(混合和匹配来自马拉卡纳和其他人的各种答案)将同时获得您想要从中提取的所有内容:

    1. 范围内的所有WiFi路由器
    2. 已连接的WiFi路由器
    3. 所有存储的WiFi网络(在您的设备上)

      public String getCurrentSsid(Context context) {
      
        String ssid = null;
        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (networkInfo.isConnected()) {
          final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
          final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
          if (connectionInfo != null && !(connectionInfo.getSSID().equals(""))) {
              //if (connectionInfo != null && !StringUtil.isBlank(connectionInfo.getSSID())) {
            ssid = connectionInfo.getSSID();
          }
       // Get WiFi status MARAKANA
          WifiInfo info = wifiManager.getConnectionInfo();
          String textStatus = "";
          textStatus += "\n\nWiFi Status: " + info.toString();
          String BSSID = info.getBSSID();
          String MAC = info.getMacAddress();
      
          List<ScanResult> results = wifiManager.getScanResults();
          ScanResult bestSignal = null;
          int count = 1;
          String etWifiList = "";
          for (ScanResult result : results) {
              etWifiList += count++ + ". " + result.SSID + " : " + result.level + "\n" +
                      result.BSSID + "\n" + result.capabilities +"\n" +
                      "\n=======================\n";
          }
          Log.v(TAG, "from SO: \n"+etWifiList);
      
          // List stored networks
          List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();
          for (WifiConfiguration config : configs) {
              textStatus+= "\n\n" + config.toString();
          }
          Log.v(TAG,"from marakana: \n"+textStatus);
        }
        return ssid;
      }
      

    免责声明:虽然这是工作代码,而不是伪代码,但它的唯一目的是说明从WiFi连接中提取数据的方法,并且在使用前应该对其进行调整(和清理)。