diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 81410983b..1c62a48bb 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -151,9 +151,20 @@ public class ContributionsListFragment extends Fragment { } return true; case R.id.menu_nearby: - //TODO: Check for permissions if API 23+ - Intent nearbyIntent = new Intent(getActivity(), NearbyActivity.class); - startActivity(nearbyIntent); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (ContextCompat.checkSelfPermission(this.getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + //See http://stackoverflow.com/questions/33169455/onrequestpermissionsresult-not-being-called-in-dialog-fragment + requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 2); + return false; + } else { + Intent nearbyIntent = new Intent(getActivity(), NearbyActivity.class); + startActivity(nearbyIntent); + } + } + else { + Intent nearbyIntent = new Intent(getActivity(), NearbyActivity.class); + startActivity(nearbyIntent); + } case R.id.menu_refresh: ((SourceRefresher)getActivity()).refreshSource(); return true; @@ -172,6 +183,14 @@ public class ContributionsListFragment extends Fragment { controller.startGalleryPick(); } } + // 2 = Location allowed when 'nearby places' selected + case 2: { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + Log.d("ContributionsList", "Location permission granted"); + Intent nearbyIntent = new Intent(getActivity(), NearbyActivity.class); + startActivity(nearbyIntent); + } + } } } 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 23c59e8c4..71060cee0 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 @@ -23,7 +23,7 @@ public class NearbyActivity extends AppCompatActivity { private double currentLatitude, currentLongitude; private String gpsCoords; - private static final String TAG = "NearbyActivty"; + private static final String TAG = "NearbyActivity"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -48,7 +48,7 @@ public class NearbyActivity extends AppCompatActivity { * Registers a LocationManager to listen for current location */ protected void registerLocationManager() { - locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); + locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); criteria = new Criteria(); provider = locationManager.getBestProvider(criteria, true); myLocationListener = new MyLocationListener(); @@ -83,6 +83,7 @@ public class NearbyActivity extends AppCompatActivity { public void onLocationChanged(Location location) { currentLatitude = location.getLatitude(); currentLongitude = location.getLongitude(); + Log.d(TAG, "Latitude: " + String.valueOf(currentLatitude) + " Longitude: " + String.valueOf(currentLongitude)); } @Override