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/layout/activity_nearby.xml b/app/src/main/res/layout/activity_nearby.xml
index 31eceff07..70f991c23 100644
--- a/app/src/main/res/layout/activity_nearby.xml
+++ b/app/src/main/res/layout/activity_nearby.xml
@@ -21,9 +21,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
-
@@ -37,7 +38,7 @@
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
-
+
-
+
+
+
-
+
+
+
+
-
-
+
-
+
+
+
+
-
+
-
-
-
-
+
+
+
+
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 ?