我希望得到当前连接的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;
}
答案 0 :(得分:4)
根据WifiConfiguration.SSID和WifiInfo.getSSID()的文档,您应该始终期望这些值在表示UTF-8编码字符串时返回引号。这是为了将它们与作为一串十六进制数字返回的SSID区分开来......这也是你应该期望处理的值。
由于框架告诉您期望变化,因此您的代码应该处理查找和屏蔽引号字符。