为什么getConfiguredNetworks()的SSID添加了引号?

时间:2015-02-15 02:57:56

标签: android

我希望得到当前连接的WIFI的名称和存储的连接WIFI的名称。

我发现wifiInfo.getSSID()可以获得正确的结果,例如MyWiFi1,

但是config.SSID中的名称添加了引号,例如“MyWiFi2”。

如何从config.SSID获取正确的名称?谢谢!

public static List<MWiFi> ListPhoneStoredWiFi(Context context) {
    List<MWiFi> myWiFiList= new ArrayList<MWiFi>();
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 

    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    if (wifiInfo!=null){
        if (wifiInfo.getNetworkId()!=-1){
           MWiFi mWiFi=new  MWiFi();
           mWiFi.name=wifiInfo.getSSID();
           mWiFi.networkID=wifiInfo.getNetworkId();
           mWiFi.enabled=true;
           myWiFiList.add(mWiFi);
        }
    }

    // List stored networks
    List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();

    if (configs!=null){     
      for (WifiConfiguration config : configs) {
          if (config.networkId!=wifiInfo.getNetworkId()) {
             MWiFi mWiFi=new  MWiFi();
             mWiFi.name=config.SSID;
             mWiFi.networkID=config.networkId;
             mWiFi.enabled=true;                 
             myWiFiList.add(mWiFi);
          }
      }
    }   

    return myWiFiList;      
}

1 个答案:

答案 0 :(得分:4)

根据WifiConfiguration.SSIDWifiInfo.getSSID()的文档,您应该始终期望这些值在表示UTF-8编码字符串时返回引号。这是为了将它们与作为一串十六进制数字返回的SSID区分开来......这也是你应该期望处理的值。

由于框架告诉您期望变化,因此您的代码应该处理查找和屏蔽引号字符。