현재 연결되어있는 네트워크의 ssid와 bssid를 검색하고 싶습니다. 그런 다음 이미 저장된 것과 비교합니다. WifiManager.NETWORK_STATE_CHANGED_ACTION 동작을 수신하는 BroadcastReceiver를 설립했습니다.
는 지금이 브로드 캐스트 리시버에 다음 코드를 가지고 :앱이 디버깅되면 오류가 표시되지 않는 이유는 무엇입니까?
ConnectivityManager con = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = null;
if (con != null) {
networkInfo = con.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
}
String ssid = "";
String bssid = "";
if(connectionInfo!=null && !TextUtils.isEmpty(connectionInfo.getSSID())){
ssid = connectionInfo.getSSID();
bssid = connectionInfo.getBSSID();
}
boolean wasFound = false;
Log.e("tag", "receiving" + " " + networkInfo.isConnected() + " " + wifis);
if(wifis!=null && networkInfo!=null && networkInfo.isConnected()) {
String[] sarray = wifis.toArray(new String[0]);
Log.e("tag", "checking0");
for (int i = 0; i < wifis.size(); i++) {
String sssid = sarray[i].substring(0,sarray[i].indexOf('+'));
String bsssid = sarray[i].replace("\"","").substring(sarray[i].replace("\"","").lastIndexOf('+')+1);
Log.e("tag", "checking" + ssid + " "+sssid);
if(ssid.equals(sssid)){
Log.e("tag", "checkingmore" + bssid + " "+bsssid);
wasFound = true;
if(!bsssid.equals(bssid)){
alertUser();
}
}
}
}
이 (통화 "alertUser을()") 작동 멋지고 내가 단계별로 디버거에서 그것을 통해 갈 때. 디버거없이 응용 프로그램을 실행하는 경우 "수신"에 대한 로그 항목 만 가져옵니다. 여기서 "networkInfo.isConnected()"는 거짓으로 표시됩니다. 인터넷 액세스가 가능하고 제대로 작동하지 않기 때문에 분명히 아닙니다. 디버거에서.
그래서 앱을 디버깅 할 때만 작동하며 실제로 실행하지는 않습니다.