2017-01-06 3 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) 만 가져 오면 문자열이됩니다. 비교되어 진실을 되 돌릴 수있다. 위의 코드를 사용하면 SSID 변수가 "wifi1"의 값을 가지므로 "wifi1"wifi1과 같지 않기 때문에 앱에서 false라고 표시합니다.

왜 이런 일이 발생합니까?

+0

은 큰 따옴표로 "wifi1"과 같은 문자열을 반환합니다. 그들을 대체하십시오 – firegloves

답변

3

SSID 부분을 제거한 후 .replaceAll("\"","");을 사용하면됩니다. 그래서 당신은해야합니다 :

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

이 그들이 문자열에있는 모든 " 상관없이 제거됩니다.

+1

한가지 주목해야 할 점은 안드로이드의 일부 버전에서는 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 -이 답변으로 "hellogigglehello"는 Wi-Fi를 검색하는 경우에도 허용됩니다. "hello"라는 이름도 있습니다. 또한 wifiInfo.getSSID()가 있어야한다고 생각합니다. contains –