0

The Device Does fetch the location. The Problem is when I need to Access the Location, it DeviceLocation.class keeps returning a null value.

My DeviceLocation class

public class DeviceLocation{

    private static final String TAG = "DeviceLocation";
    private FusedLocationProviderClient mFusedLocationProviderClient;
    private static final int ERROR_DIALOG_REQUEST = 200;
    private static Location mLocation;
    private Context context;

    public DeviceLocation(Context context) {
        this.context = context;
    }

    private void updateDeviceLocation() {
        mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context);
        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
                        Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.INTERNET}, 123);
            }
            return;
        }
        mFusedLocationProviderClient.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if(location != null){
                    mLocation = location;
                    Log.d(TAG, "Device Location is: " + mLocation.getLatitude() + ", " + mLocation.getLongitude()); //// ---> THIS WORKS
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.d(TAG, "Error trying to get last Location");
            }
        });
    }

    public void getDeviceLocation(){
        updateDeviceLocation();
        Log.d(TAG, "getDeviceLocation() --> " + mLocation); // WHY DOES NOT THIS WORK!!! ---> WHY DOES THIS PRINT 'null'!!!!!!!!!!
    }
}

In my MainActivity I declared a new DeviceLocation object, and initialized it in the onCreate() Method. Then I call the getDeviceLocation() method of DeviceLocatio class.

MainActivity.class:

DeviceLocation deviceLoc;

onCreate() Method:

deviceLoc = new DeviceLocation(MainActivity.this);
deviceLoc.getDeviceLocation();
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
CodeMoney
  • 1
  • 1

0 Answers0