Этот код работал для меня:
public void showOurLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED && ActivityCompat.
checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION}, 0);
return;
}
fusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
lastLocation = location;
String timestamp = new java.util.Date().toString();
String address = "";
if (Geocoder.isPresent()) {
try {
adr = (ArrayList<Address>) geocoder
.getFromLocation(location.getLatitude(), location.getLongitude(), 2);
address = adr.get(0).toString().split("\"")[1];
lastAddress = "Текущий адрес:\n" + address;
} catch (IOException e) {
e.printStackTrace();
}
}
LatLng weAreHere = new LatLng(location.getLatitude(), location.getLongitude());
lastLocationRecord=new LocationRecord(Calendar.
getInstance().getTime(),currentUserClearEmail,location,currentUser.getUid());
}
}
});
}
иногда мы все еще можем получить ноль, это нормально, я думаю, до тех пор, пока мы можем получить местоположение чуть позже
О, вы просто следует использовать слушатель для этого в вашем коде.