我正在开发一个Android程序,需要在实现某个操作之前识别用户所连接的Wifi网络。这是我为实现这个目的而运行的代码:
public String isConectedToPrivateNet(StringBuilder ssid) {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
ssid.replace(0, ssid.length(), wifiInfo.getSSID());
Log.e("Data(b4 iF): ", ssid.toString());
if(ssid.toString().equals("ACHILLES 101010")) {
Log.e("Data (iN iF): ", ssid.toString());
}else {
ssid.replace(0, ssid.length(), "DIDN'T START");
}
return ssid.toString();
}
基本上,如果if语句为真,那么它应该只返回SSID名称吗?但它不会,而是返回“DID NOT START”。当我读取我的日志时,“数据(b4 if):”表示SSID为“ACHILLES 101010”。因此,我假设if语句应该评估为true,为什么不这样做呢?
这里有一些有趣的事情:如果我用.contains()替换.equals(),if语句块中的代码运行完美,并返回SSID。为什么会这样?
*一些注意事项:StringBuilder传递为空,这里是声明和初始化
public StringBuilder ssid = new StringBuilder("");
*我也试过使用StringBuffer,同样的事情发生了。
答案 0 :(得分:1)
我发现了问题:返回的SSID中有引号,所以它是这样的:“ACHILLES 101010”,而不仅仅是ACHILLES 101010。 所以我不得不将代码更改为:
if(ssid.toString().equals("\"ACHILLES 101010\"")) {
.... }
感谢您的所有回复,我应该发布日志以获得更有效的答案,但无论如何,谢谢。
答案 1 :(得分:0)
也许你的SSID字符串中有空格或前导空格?
尝试使用:
if (ssid.toString().trim().equals("ACHILLES 101010"))
trim()将删除尾随和前导空格。