2017-01-06 5 views
0

これは非常にばかげた質問かもしれませんが、私は正直なところ、ここで何が起こっているのか分かりません、私は現在のSSIDをこのような別の変数と比較しようとしています:String.replaceは余分な引用符を返しています

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
String SSID = wifiInfo.getSSID().replace("SSID: ",""); 
if(myWifi.equals(SSID)){ 

} else { 

} 

ご存知のように、wifiInfo.getSSID()SSID: wifi1のような文字列を返します。 myWifiの値がwifi1の場合、wifiInfo.getSSID()と比較するとfalseであると言われますので、SSID:の部分を何も置き換えようとしていないので、SSID名(wifi1)のみを取得しています。比較して真を返すことができます。しかし、上記のコードを使用すると、"wifi1"という値がSSID変数に設定されるため、"wifi1"wifi1と同じではないため、falseと表示されます。

どうしてですか?

+0

は「wifi1」のような文字列を二重引用符で返します。それらを置き換えてください – firegloves

答えて

3

SSID部分を削除したあと、.replaceAll("\"","");をそのまま使用してください。だから、必要があります:

String SSID = wifiInfo.getSSID().replace("SSID: ","").replaceAll("\"",""); 

これは、彼らが文字列内にあるすべての"関係なく削除します。

+1

また、注意しなければならないことは、Androidのいくつかのバージョンでは、SSIDには余分な引用符があり、いくつかのバージョンではそうではありません。こちらをご覧ください:http://stackoverflow.com/questions/13563032/jelly-bean-issue-wifimanager-getconnectioninfo-getssid-extra –

+0

これは間違いなく動作します。しかし、置き換えが引用符を追加する理由は考えられません。 – user1676874

+1

@StephenRudaによってリンクされた回答は実際にはうまくいくはずです。 –

-1

String.Containsを使用して、必要な文字列を確認します。

bool wifiNameExists = wifiInfo.Contains("wifi1") 

「wifi1」には、検索するWi-Fi名を含む文字列を使用できます。

+0

真。 OPのコードスニペットでは、 'if(SSID.contains(myWifi))'を使用できます。しかし、あなたがSSIDを保存したいのであれば、上記の私の答えで説明した '' 'を削除する方がいいでしょう。 –

+0

@AlexNewmanそれだけではなく - あなたがwifiを探していても" hellogigglehello "私はそれがwifiInfo.getSSID()であるべきだと信じています。 –

関連する問題