2016-12-04 28 views
-2

我正在研究一个android程序,该程序需要在实现特定操作之前识别用户连接到的Wifi网络。这是我跑做到这一点的代码:如果语句不是使用equals运行的字符串,但包含作品

 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(); 

} 

基本上,这应该只返回SSID名称,如果if语句是真的吗?但它不会,而是返回“DID NOT START”。当我阅读我的日志时,“Data(b4 if):”显示SSID为“ACHILLES 101010”。因此,我认为if语句应该评估为真,为什么它不这样做?

这里有一些有趣的事情:如果我用.contains()替换.equals(),if语句块中的代码完美运行,并返回SSID。这是为什么?

*的几个注意事项:StringBuilder的是为空在这里传递的是它的声明和初始化

public StringBuilder ssid = new StringBuilder(""); 

*我也试过用StringBuffer,同样发生。

+0

将logcat复制粘贴到显示隐藏字符的东西中。 –

+0

@ cricket_007我试过那个男人,而且没有隐藏的角色。我使用了这个工具:[show hidden](http://www.online-toolz.com/tools/string-functions.php#)。谢谢 –

回答

0

也许你的SSID字符串中有空格或空格?

尝试使用:

if (ssid.toString().trim().equals("ACHILLES 101010")) 

装饰()将删除尾随和前导空格。

+0

它没有工作,仍然表现相同。 –

1

我发现问题:返回的SSID有引号,所以它是这样的:“ACHILLES 101010”,而不只是ACHILLES 101010.因此,我不得不将代码更改为这样的东西:

if(ssid.toString().equals("\"ACHILLES 101010\"")) { 
.... } 

感谢您的回复,我应该发布日志以获得更有效的答案,但无论如何要感谢。

相关问题