Android的WifiInfo#getSSID():是否有办法了解SSID本身是否带有双引号,还是Android创建的双引号?

时间:2018-11-13 16:01:09

标签: android android-wifi ssid

根据getSSID方法的文档:

  

返回当前802.11网络的服务集标识符(SSID)。如果可以将SSID解码为UTF-8,则会将其返回,并用双引号引起来。否则,它将以十六进制字符串形式返回。如果当前没有网络连接,则SSID可能为{@code null}。

此方法的源代码在某种程度上符合文档要求(null情况除外),因此在这里我不会将其作为代码段but here it is for API 21附加。

似乎我可以删除重复代码,但是根据getSSID()的{​​{3}},WifiInfo方法,可以说实现在Android版本之间可能会有所不同

有关SSID的偶然消息来源提到它是字母数字,但是我发现了一个有争议的说法:根据this SO question SSID可以包含双引号,因此它是有效字符。

因此, UTF-8编码的SSID可以用双引号引起来或不使用

问题:这里是一种可靠的方式来识别SSID在开头和结尾都包含双引号,还是来自Android的getSSID实现?

2 个答案:

答案 0 :(得分:0)

WifiInfo.getSSID()返回String,因此您可以为此使用String.matches和String.replace

要检测:

String ssid = "\"MYSSID\"";
Boolean matches = ssid.matches("^\".*\"$");
Log.v("Check quotes", "Matching " + matches);

要删除:

ssid = ssid.replace("\"", "");

答案 1 :(得分:0)

Kotlin 中的一个简单解决方案是这样的

ssid = ssid.removeSurrounding("\"")

如果找到它们,它将负责删除前导和尾随双引号。