У меня есть способ показать на карте текущее положение устройства. Я использую FusedLocationProviderClient
, потому что он кажется наиболее точным.
Вкл. currentLocation.getLatitude()
Я получаю предупреждение:
При вызове метода может возникать исключение java.Lang.NullPointerException
Как я могу избежать этого риска? И почему он связан только с currentLocation.getLatitude (), а не с currentLocation.getLongitude()
?
private void getDeviceLocation(){
Log.d(TAG, "getDeviceLocation: getting the devices current location");
FusedLocationProviderClient mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
final Task location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(task -> {
if(task.isSuccessful()){
Log.d(TAG, "onComplete: found location!");
Location currentLocation = (Location) task.getResult();
LatLng latLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, DEFAULT_ZOOM));
}else{
Log.d(TAG, "onComplete: current location is null");
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}