2017-12-03 2 views
0

현재 연결되어있는 네트워크의 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()"는 거짓으로 표시됩니다. 인터넷 액세스가 가능하고 제대로 작동하지 않기 때문에 분명히 아닙니다. 디버거에서.

그래서 앱을 디버깅 할 때만 작동하며 실제로 실행하지는 않습니다.

답변

0

아래 라인의 로그에 networkInfo.inConnected()의 상태가 표시됩니까?

Log.e("tag", "receiving" + " " + networkInfo.isConnected() + " " + wifis);

관련 문제