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

Hel*_*oCW 6 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;      
}
Run Code Online (Sandbox Code Playgroud)

Dev*_*red 4

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

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

  • 如果我的 SSID 以引号开头和结尾怎么办?他们是否以某种方式逃脱了? (2认同)