【问题标题】:Android's WifiInfo#getSSID(): is there a way to understand if SSID has double quotes by itself or is it Android created ones?Android 的 WifiInfo#getSSID():有没有办法了解 SSID 本身是否有双引号,或者是 Android 创建的?
【发布时间】:2019-04-16 12:23:13
【问题描述】:

根据getSSID 方法的文档:

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

这个方法的源代码确实有点符合文档(null的情况除外),所以我这里就不附上代码sn-p,but here it is for API 21了。

看来我可以只去掉双码,但是根据WifiInfothis SO questiongetSSID()方法可以说实现会因android版本而异

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

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

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

【问题讨论】:

    标签: android android-wifi ssid


    【解决方案1】:

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

    检测:

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

    删除:

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

    【讨论】:

      【解决方案2】:

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

      ssid = ssid.removeSurrounding("\"")
      

      如果发现了前导和尾随双引号,它将负责删除它们。

      【讨论】:

        猜你喜欢
        • 2016-08-01
        • 2015-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多