Resolves Issue #5413 Crash when opening Nearby when location permission hasn't been granted yet (#5418)

* Resolves Issue #5413

* Added Javadoc and formatted code
This commit is contained in:
Shashwat Kedia 2024-01-27 19:17:36 +05:30 committed by GitHub
parent 71de19f27b
commit 8222c4a42c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -304,17 +304,9 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
} }
}); });
private ActivityResultLauncher<String[]> locationPermissionLauncher = registerForActivityResult( private ActivityResultLauncher<String> locationPermissionLauncher = registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultContracts.RequestPermission(), isGranted -> {
new ActivityResultCallback<Map<String, Boolean>>() { if (isGranted) {
@Override
public void onActivityResult(Map<String, Boolean> result) {
boolean areAllGranted = true;
for (final boolean b : result.values()) {
areAllGranted = areAllGranted && b;
}
if (areAllGranted) {
locationPermissionGranted(); locationPermissionGranted();
} else { } else {
if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) { if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) {
@ -336,7 +328,6 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
isPermissionDenied = true; isPermissionDenied = true;
} }
} }
}
}); });
/** /**
@ -1037,10 +1028,28 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
return latLng; return latLng;
} }
/**
* Computes location where map should be centered
*
* @return returns the last location, if available, else returns default location
*/
@Override @Override
public fr.free.nrw.commons.location.LatLng getMapCenter() { public fr.free.nrw.commons.location.LatLng getMapCenter() {
fr.free.nrw.commons.location.LatLng latLnge = new fr.free.nrw.commons.location.LatLng( if (applicationKvStore.getString("LastLocation") != null) {
final String[] locationLatLng
= applicationKvStore.getString("LastLocation").split(",");
lastKnownLocation
= new fr.free.nrw.commons.location.LatLng(Double.parseDouble(locationLatLng[0]),
Double.parseDouble(locationLatLng[1]), 1f);
} else {
lastKnownLocation = new fr.free.nrw.commons.location.LatLng(51.50550,
-0.07520, 1f);
}
fr.free.nrw.commons.location.LatLng latLnge = lastKnownLocation;
if (mapCenter != null) {
latLnge = new fr.free.nrw.commons.location.LatLng(
mapCenter.getLatitude(), mapCenter.getLongitude(), 100); mapCenter.getLatitude(), mapCenter.getLongitude(), 100);
}
return latLnge; return latLnge;
} }
@ -1320,7 +1329,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
@Override @Override
public void checkPermissionsAndPerformAction() { public void checkPermissionsAndPerformAction() {
Timber.d("Checking permission and perfoming action"); Timber.d("Checking permission and perfoming action");
locationPermissionLauncher.launch(new String[]{permission.ACCESS_FINE_LOCATION}); locationPermissionLauncher.launch(permission.ACCESS_FINE_LOCATION);
} }
/** /**