2017-10-30 1 views
1

Ich habe ein Manifest registriert BroadcastReceiver, die ich zur Überwachung von WiFi-Verbindungen verwende. Ich erhalte jedes Mal eine Verbindung, wenn das Gerät nach WiFi sucht. Ich brauche einen Weg, um festzustellen, ob die Übertragung ein Ergebnis des Scannens nach WiFi war oder ob das Gerät tatsächlich von einem Netzwerk getrennt war.Wie bekomme ich den Grund für die WiFi-Verbindung trennen

public class WifiReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(final Context context, Intent intent) { 
     if(!intent.getAction().equals("android.net.wifi.STATE_CHANGE")) 
      return; 
     NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 
     if (networkInfo != null) { 
      if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) { 
       if(networkInfo.getDetailedState() == CONNECTED || networkInfo.getDetailedState() == DISCONNECTED) 
        PresenceData.loadData(context); 
       if(networkInfo.getDetailedState() == CONNECTED) { 
        System.out.println("Wifi connected"); 
        PresenceData.sendNotification("Wifi Connected", "You are now connected to " + PresenceData.getCurrentWifiSSID(context), context); 
        PresenceData.submitChanges(context); 
       } else if(networkInfo.getDetailedState() == DISCONNECTED) { 
        System.out.println("Wifi Disconnected"); 
        PresenceData.sendNotification("Wifi Disconnected", "Your wifi has disconnected", context); 
        UpdaterService.scheduleUpdate(context); 
       } 
      } 
     } 
    } 
} 
+0

uns zeigen, welchen Code Sie –

+0

Ok haben, hinzugefügt es einfach –

Antwort

0

Sie könnten versuchen, NetworkInfo.State mit dem aktuellen Zustand des Netzwerks zu erhalten. Es gibt Aufzählungen für alle Arten von möglichen Zuständen, wie Ausfälle, Erfolge, Scannen, usw. Unten ist ein Beispiel, wie die Informationen abzurufen:

public class MainActivity extends AppCompatActivity { 

private ConnectivityManager connectivityManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    this.connectivityManager = (ConnectivityManager) 
    this.getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo info = connectivityManager.getActiveNetworkInfo(); 
    System.out.println("Network Status " + info.getDetailedState().name()); 
    } 
} 
+0

Ich benutze das bereits, aber mein Problem ist, dass nach dem Scannen wird es getrennt sagen. Ich versuche festzustellen, ob das WiFi kürzlich getrennt wurde oder ob es gerade gescannt wurde. –

Verwandte Themen