如何使用android API获取无线网络的名称?

时间:2010-08-20 14:43:03

标签: android wifi android-wifi

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

请帮助..

[编辑]

根据洛克斯利的回答:

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

4 个答案:

答案 0 :(得分:42)

android.net.wifi.WifiInfo.getSSID

答案 1 :(得分:22)

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

答案 2 :(得分:19)

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

  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;
    }
    
  4. 免责声明:虽然这是工作代码,而不是伪代码,但它的唯一目的是说明从wifi连接中提取数据的方法,并且应该在使用前对其进行调整(和清理)。

答案 3 :(得分:0)

简单的两行

WifiManager w=(WifiManager)getSystemService(Context.WIFI_SERVICE);
String wifi=w.getConnectionInfo().getSSID();

记得把它放在你的清单中

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>