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(
new ActivityResultContracts.RequestMultiplePermissions(),
new ActivityResultCallback<Map<String, Boolean>>() {
@Override
public void onActivityResult(Map<String, Boolean> result) {
boolean areAllGranted = true;
for (final boolean b : result.values()) {
areAllGranted = areAllGranted && b;
}
if (areAllGranted) {
private ActivityResultLauncher<String> locationPermissionLauncher = registerForActivityResult(
new ActivityResultContracts.RequestPermission(), isGranted -> {
if (isGranted) {
locationPermissionGranted();
} else {
if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) {
@ -336,7 +328,6 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
isPermissionDenied = true;
}
}
}
});
/**
@ -1037,10 +1028,28 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
return latLng;
}
/**
* Computes location where map should be centered
*
* @return returns the last location, if available, else returns default location
*/
@Override
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);
}
return latLnge;
}
@ -1320,7 +1329,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
@Override
public void checkPermissionsAndPerformAction() {
Timber.d("Checking permission and perfoming action");
locationPermissionLauncher.launch(new String[]{permission.ACCESS_FINE_LOCATION});
locationPermissionLauncher.launch(permission.ACCESS_FINE_LOCATION);
}
/**