mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
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:
parent
71de19f27b
commit
8222c4a42c
1 changed files with 44 additions and 35 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue