fusedLocationProviderClient.lastLocation.addOnSuccessListener always null

后端 未结 2 1065
庸人自扰
庸人自扰 2021-02-19 20:25

I just updated my Location API to use FusedLocationProviderClient but I am having this issue, when I turn off and on the GPS, I am always getting null location:

         


        
2条回答
  •  轮回少年
    2021-02-19 21:05

    You can use getLocationAvailability() method on your FusedLocationPrivedClient object and if it returns true then only use getLastLocation() method otherwise use requestLocationUpdates() method like this :

    FusedLocationProviderClient fusedLocationProviderClient =
                LocationServices.getFusedLocationProviderClient(InitActivity.this);
        if (ActivityCompat.checkSelfPermission(this.getApplicationContext(),
                android.Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
    
    fusedLocationProviderClient.getLocationAvailability().addOnSuccessListener(new OnSuccessListener() {
                    @Override
                    public void onSuccess(LocationAvailability locationAvailability) {
                        Log.d(TAG, "onSuccess: locationAvailability.isLocationAvailable " + locationAvailability.isLocationAvailable());
                        if (locationAvailability.isLocationAvailable()) {
                            if (ActivityCompat.checkSelfPermission(InitActivity.this.getApplicationContext(),
                                    android.Manifest.permission.ACCESS_FINE_LOCATION)
                                    == PackageManager.PERMISSION_GRANTED) {
                                Task locationTask = fusedLocationProviderClient.getLastLocation();
                                locationTask.addOnCompleteListener(new OnCompleteListener() {
                                    @Override
                                    public void onComplete(@NonNull Task task) {
                                        Location location = task.getResult();                                    
                                    }
                                });
                            } else {
                                requestLocationPermissions ();
                            }
    
                        } else {
    fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent);
    
                        }
    
                    }
                });
            } else {
                requestLocationPermissions ();
            }
    

提交回复
热议问题