2017-08-04 1 views
-3

Ich benutze Firebase. Einige Funktionen, die meine App nicht nutzen kann, waren offline (oder vielleicht kann der Offline-Modus dies in Zukunft machen). So wie ich feststellen kann, war die Verbindung verloren, oder wifi/otherNetwork ist während der Ausführung der Aktivität ausgeschaltet. Ich folge diesem doc aber nur, wenn Start App ... funktioniert nicht auf App ausgeführt. Also, habt ihr keine Lösung für mein Problem?Wie kann ich feststellen, dass die Verbindung unterbrochen wurde?

Antwort

0

Mit dieser Methode können die Internet-Verbindung in der App überprüfen:

public class NetworkChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     Intent networkStateIntent = new Intent(Constants.NETWORK_AVAILABLE_ACTION); 
     networkStateIntent.putExtra(Constants.IS_NETWORK_AVAILABLE, isConnectedToInternet(context)); 
     LocalBroadcastManager.getInstance(context).sendBroadcast(networkStateIntent); 
    } 

    public boolean isConnectedToInternet(Context context) { 

     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     //should check null because in airplane mode it will be null 
     if (netInfo != null && netInfo.isConnected()) { 
      return true; 
     } else { 
      return false; 
     } 

    } 

die Empfänger in der Manifest-Datei wie folgt registrieren:

<receiver android:name=".utils.NetwrokConnection.NetworkChangeReceiver"> 
      <intent-filter> 
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
       <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
      </intent-filter> 
     </receiver> 

Verwendung dieses Verfahren in der Tätigkeit, wo Sie wollen überprüfen Sie die Verbindung:

public void networkConnection() { 
     IntentFilter intentFilter = new IntentFilter(Constants.NETWORK_AVAILABLE_ACTION); 
     LocalBroadcastManager.getInstance(this).registerReceiver(new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       boolean isNetworkAvailable = intent.getBooleanExtra(Constants.IS_NETWORK_AVAILABLE, false); 
       Dialogs.getInstance().showSnackbar(activity,(View) rootlayout, isNetworkAvailable); 
      } 
     }, intentFilter); 

}

Fügen Sie auch die Berechtigung in der Menifestdatei hinzu:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
Verwandte Themen