diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index ed954ed42..88d5880f5 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -1,6 +1,9 @@ package fr.free.nrw.commons.nearby; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; @@ -10,6 +13,7 @@ import android.support.design.widget.BottomSheetBehavior; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AlertDialog; +import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -33,6 +37,7 @@ import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager; import fr.free.nrw.commons.location.LocationUpdateListener; import fr.free.nrw.commons.theme.NavigationBaseActivity; +import fr.free.nrw.commons.utils.NetworkUtils; import fr.free.nrw.commons.utils.UriSerializer; import fr.free.nrw.commons.utils.ViewUtil; @@ -69,11 +74,14 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp private boolean lockNearbyView; //Determines if the nearby places needs to be refreshed private BottomSheetBehavior bottomSheetBehavior; // Behavior for list bottom sheet private BottomSheetBehavior bottomSheetBehaviorForDetails; // Behavior for details bottom sheet - private NearbyMapFragment nearbyMapFragment; + public NearbyMapFragment nearbyMapFragment; private NearbyListFragment nearbyListFragment; private static final String TAG_RETAINED_MAP_FRAGMENT = NearbyMapFragment.class.getSimpleName(); private static final String TAG_RETAINED_LIST_FRAGMENT = NearbyListFragment.class.getSimpleName(); + private final String NETWORK_INTENT_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; + private BroadcastReceiver broadcastReceiver; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -271,6 +279,7 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp super.onResume(); lockNearbyView = false; checkGps(); + addNetworkBroadcastReceiver(); } @Override @@ -283,9 +292,28 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp // to the retained fragment object to perform its own cleanup. removeMapFragment(); removeListFragment(); + unregisterReceiver(broadcastReceiver); } } + private void addNetworkBroadcastReceiver() { + IntentFilter intentFilter = new IntentFilter(NETWORK_INTENT_ACTION); + + broadcastReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + if (NetworkUtils.isInternetConnectionEstablished(NearbyActivity.this)) { + refreshView(LocationServiceManager + .LocationChangeType.LOCATION_SIGNIFICANTLY_CHANGED); + } else { + ViewUtil.showLongToast(NearbyActivity.this, getString(R.string.no_internet)); + } + } + }; + + this.registerReceiver(broadcastReceiver, intentFilter); + } /** @@ -297,6 +325,12 @@ public class NearbyActivity extends NavigationBaseActivity implements LocationUp if (lockNearbyView) { return; } + + if (!NetworkUtils.isInternetConnectionEstablished(this)) { + hideProgressBar(); + return; + } + locationManager.registerLocationManager(); LatLng lastLocation = locationManager.getLastLocation(); diff --git a/app/src/main/java/fr/free/nrw/commons/utils/NetworkUtils.java b/app/src/main/java/fr/free/nrw/commons/utils/NetworkUtils.java new file mode 100644 index 000000000..e934e53e5 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/NetworkUtils.java @@ -0,0 +1,18 @@ +package fr.free.nrw.commons.utils; + + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + +public class NetworkUtils { + + public static boolean isInternetConnectionEstablished(Context context) { + ConnectivityManager cm = + (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); + + NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); + return activeNetwork != null && + activeNetwork.isConnectedOrConnecting(); + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/utils/ViewUtil.java b/app/src/main/java/fr/free/nrw/commons/utils/ViewUtil.java index 82227c59a..91e2114a9 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/ViewUtil.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/ViewUtil.java @@ -1,7 +1,9 @@ package fr.free.nrw.commons.utils; +import android.content.Context; import android.support.design.widget.Snackbar; import android.view.View; +import android.widget.Toast; public class ViewUtil { @@ -9,4 +11,9 @@ public class ViewUtil { Snackbar.make(view, messageResourceId, Snackbar.LENGTH_SHORT).show(); } + public static void showLongToast(Context context, String text) { + Toast.makeText(context, text, + Toast.LENGTH_LONG).show(); + } + } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 16cd87aa1..bae83799b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -253,9 +253,12 @@ Rate Us Frequently Asked Questions Skip Tutorial - + + Internet unavailable + Internet available Error fetching notifications No notifications found + Translate Languages Select the langauge you want translations for ?