2828import android .graphics .Bitmap ;
2929import android .graphics .PorterDuff ;
3030import android .graphics .drawable .Drawable ;
31+ import android .net .ConnectivityManager ;
3132import android .net .Uri ;
3233import android .os .Build ;
3334import android .os .Bundle ;
@@ -183,6 +184,7 @@ public class ZulipActivity extends BaseActivity implements
183184 private SimpleCursorAdapter emailActvAdapter ;
184185 private AppBarLayout appBarLayout ;
185186 private MutedTopics mMutedTopics ;
187+ private BroadcastReceiver networkStateReceiver ;
186188 private BroadcastReceiver onGcmMessage = new BroadcastReceiver () {
187189 public void onReceive (Context contenxt , Intent intent ) {
188190 // Block the event before it propagates to show a notification.
@@ -553,6 +555,7 @@ public Cursor runQuery(CharSequence charSequence) {
553555 handleOnFragmentChange ();
554556 calendar = Calendar .getInstance ();
555557 setupSnackBar ();
558+ setupNetworkBroadcastReceiver ();
556559 }
557560
558561 /**
@@ -1976,6 +1979,7 @@ protected void onPause() {
19761979 Log .i ("status" , "suspend" );
19771980
19781981 unregisterReceiver (onGcmMessage );
1982+ unregisterReceiver (networkStateReceiver );
19791983
19801984 if (event_poll != null ) {
19811985 event_poll .abort ();
@@ -1997,6 +2001,9 @@ protected void onResume() {
19972001 filter .setPriority (2 );
19982002 registerReceiver (onGcmMessage , filter );
19992003
2004+ // Registering network state broadcast receiver
2005+ setupNetworkBroadcastReceiver ();
2006+
20002007 homeList .onActivityResume ();
20012008 if (narrowedList != null ) {
20022009 narrowedList .onActivityResume ();
@@ -2141,4 +2148,32 @@ public void onClick(View view) {
21412148 public enum Flag {
21422149 RESET_DATABASE ,
21432150 }
2151+ public void setupNetworkBroadcastReceiver ()
2152+ {
2153+ networkStateReceiver = new BroadcastReceiver () {
2154+ final CoordinatorLayout coordinatorLayout = (CoordinatorLayout ) findViewById (R .id .coordinatorLayout );
2155+ @ Override
2156+ public void onReceive (Context context , Intent intent ) {
2157+ Log .d ("Network Listener" , "Network Type Changed" );
2158+ boolean isConnected = intent .getBooleanExtra (ConnectivityManager .EXTRA_NO_CONNECTIVITY , false );
2159+ if (isConnected ){
2160+ //Disable fab when there is no connectivity
2161+ fab .setEnabled (false );
2162+ fab .setVisibility (View .INVISIBLE );
2163+ Snackbar .make (coordinatorLayout ,R .string .no_connection ,Snackbar .LENGTH_INDEFINITE ).show ();
2164+ Log .d ("Network Listener" , "No Internet" );
2165+ }
2166+ else {
2167+ //Enabling fab when connection is reestablished
2168+ fab .setEnabled (true );
2169+ fab .setVisibility (View .VISIBLE );
2170+ Snackbar .make (coordinatorLayout ,R .string .connection_established ,Snackbar .LENGTH_SHORT ).show ();
2171+ Log .d ("Network Listener" , "Internet" );
2172+ }
2173+ }
2174+ };
2175+
2176+ IntentFilter filter = new IntentFilter (ConnectivityManager .CONNECTIVITY_ACTION );
2177+ registerReceiver (networkStateReceiver , filter );
2178+ }
21442179}
0 commit comments