根据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
实现?
答案 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("\"")
如果找到它们,它将负责删除前导和尾随双引号。