Aid*_*Fry 25 android ssid android-wifi android-4.2-jelly-bean
嗨所有错误报告您的信息.链接
问题详情:
守则 -wifiManager.getConnectionInfo().getSSID()
上面的代码返回当前的SSID,它返回当前的SSID,并在其周围加上额外的引号.
例如.SSID internet返回为"internet".
这只能在使用设备Nexus 7的Jelly bean 4.2上看到.
这个错误导致我们的应用程序出错,因为我们将当前的SSID与我们尝试连接的SSID进行比较.
wifiManager.getScanResults();但是,代码仍会返回所有SSID而没有额外的引号.
kis*_*u27 32
根据http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getSSID()上的文档,这不是错误和行为是正确的
所谓的bug显然是在4.2之前的设备中,因为它们没有带有""外壳.
在Android留下的混乱状态下,Aiden的方法对我来说很好看.然而,理论上正确只需要
if (ssid.startsWith("\"") && ssid.endsWith("\"")){
ssid = ssid.substring(1, ssid.length()-1);
}
Run Code Online (Sandbox Code Playgroud)
这个正则表达式非常简洁:
String ssid = wi.getSSID().replaceAll("^\"(.*)\"$", "$1");
Run Code Online (Sandbox Code Playgroud)
只是为了笔记
编辑°1(根据评论中的问题):
OP描述的问题是,在某些设备上,返回的SSID getSSID()被包含在内,""而不是在其他设备上.例如,在某些设备上,SSID "MY_WIFI"在其他设备上,MY_WIFI或者在其他设备上,或者用Java代码表示:"\"MY_WIFI\""和"MY_WIFI".
为了统一这两个结果,我建议删除"开头和结尾 - 只有那里,因为"是SSID中的合法字符.在上面的正则表达式中
^表示从开始
$表示结束
\"意味着"(转义)
.*表示任意数量的字符
(...)表示可以引用的捕获组$1
所以整个表达式意味着:替换"<something>"为<something>where $1= <something>.如果"在结束/开始时没有,则正则表达式不匹配,并且不替换任何内容.
有关更多详细信息,请参阅Java Pattern类.
对于平均时间,这就是我如何解决它,虽然它不是很好,它将解决问题.
public String removeQuotationsInCurrentSSIDForJellyBean(String ssid){
int deviceVersion= Build.VERSION.SDK_INT;
if (deviceVersion >= 17){
if (ssid.startsWith("\"") && ssid.endsWith("\"")){
ssid = ssid.substring(1, ssid.length()-1);
}
}
return ssid;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4863 次 |
| 最近记录: |