Friday, 9 April 2021

Get last position known in foreground Android

After several (unsuccessful) attempts to make my applications compliant about the background access to the location, I decided to re-structure my code in order to remove the "ACCESS_BACKGROUND_LOCATION" permission from the manifest.

My application necessarily needs to get the location of the device at certain times (specifically I need the coordinates), what I'm interested in knowing is: without using the permission mentioned above, how do I get the location of the device?

is it possible to do it with a one-time call without using services etc?

I thought about using this code, do you think it could be enough?

 LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);
 mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
 mFusedLocationClient.getLastLocation()
    .addOnSuccessListener(this, new OnSuccessListener<Location>() {
        @Override
        public void onSuccess(Location location) {
            if (location != null) {
                // Logic to handle location object
            }
        }
    });

or something like this:

        LocationManager mLocationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE);
        List<String> providers = mLocationManager.getProviders(true);
        Location bestLocation = null;
        for (String provider : providers) {
            Location location = mLocationManager.getLastKnownLocation(provider);
            if (location == null) {
                continue;
            }
            if (bestLocation == null || location.getAccuracy() < bestLocation.getAccuracy()) {
                bestLocation = location;
            }
        }

is there a better way to do this?



from Get last position known in foreground Android

No comments:

Post a Comment