2016-05-24 12 views
0

Ich versuche zu testen/zu implementieren verlorenen Netzwerk Anwendungsfall. Ich habe Code wie unten erwähnt.android Connectivity_Change broadcastreceiver nicht konsequent aufgerufen

Ich laufe es auf Galaxy S6. Ich habe sowohl mobile Daten als auch WLAN aktiviert.

Netzwerk zu deaktivieren, Ich schalte "Flugzeugmodus"

Mein Problem ist:

Wenn ich App von Android Studio Relaunch, ich ConnectionChangeReceiver.onReceive() genannt bekommen. Jedoch, nach wenigen Flugmodus ein-/ausschalten, bekomme ich nicht onReceive() genannt.

Ich setze Breakpoint im Studio um zu überprüfen, ob es angerufen wird oder nicht.

Fehle ich etwas?

public class ConnectionChangeReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // get Connectivity Manager object to check connection 
     ConnectivityManager connectivityManager =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 

     // Check for network connections 
     if (activeNetInfo != null && activeNetInfo.isConnected()) { 
      Intent newintent = new Intent(BroadcastedIntentFilters.INTERNET_CONNECTED); 
      LocalBroadcastManager.getInstance(context).sendBroadcast(newintent); 
     } 
    } 
} 

In Manifest-Datei

<receiver 
     android:name=".Network.ConnectionChangeReceiver" 
     android:exported="true" 
     android:label="NetworkConnection" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
      <action android:name="android.net.wifi.STATE_CHANGE"/> 
     </intent-filter> 
    </receiver> 


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 

Antwort

6

In Android 5.0 und höher Sie Änderungen von connectivityManager.registerNetworkCallback zu überwachen haben, die im Vergleich zu früheren Versionen unterscheiden, wo Sie in BroadcastReveiver hören sollen.

Ich habe eine einfache Klasse geschrieben, die alle Android-Versionen unterstützt und ermöglicht, Änderungen zu überwachen und nach dem aktuellen Status zu fragen.

https://github.com/mklimek/network-availability

+0

für jetzt sieht es so aus. Ich teste noch und werde Fragen stellen, wenn ich Probleme sehe. – GJain

0

finde ich ein paar Links für diese Aufgabe: no. 1 no. 2

Hoffnung voll funktioniert. genießen Sie Ihre Code-Zeit :)

Verwandte Themen