如何使用android API从android中获取wifi网络的名称?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3531940/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 10:38:44  来源:igfitidea点击:

How to get name of wifi-network out of android using android API?

androidwifiandroid-wifi

提问by noisy

I thought that I should use NetworkInterface::getDisplayName. I got some name, but this name is different that this name which I can see, when I choosing to which network I want to connect.

我认为我应该使用 NetworkInterface::getDisplayName。我有一些名字,但是当我选择要连接的网络时,这个名字与我可以看到的这个名字不同。

Please help..

请帮忙..

[EDIT]

[编辑]

acording to Loxley answer:

根据 Loxley 的回答:

WifiManager wifiMgr = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
String name = wifiInfo.getSSID();

采纳答案by Loxley

android.net.wifi.WifiInfo.getSSID?

android.net.wifi.WifiInfo.getSSID?

回答by sergey.n

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

回答by tony gil

This (mix and match of various answers from Marakana and others) will simultaneously get everything you want to extract from:

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

  1. all wifi routers in range
  2. connected wifi router
  3. all stored wifi networks (on your device)

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

DISCLAIMER: while this is working code, not pseudo code, its only purpose is to illustrate the methods for data extraction from wifi connections and it should be adapted (and cleaned) before use.

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