Pegando as coordenadas tendo falha no gps

Bom dia para todos! Tenho um projeto que funciona direitinho, mas tem um problema. no código abaixo só reconhece que o gps está habilitado caso eu abrir google maps primeiramente caso não faça isso depender só do meu projeto fazer isso de cara ao buscar as coordenadas esta sempre apontando que gps está desabilitado mesmo estando habilitado(sem dizer que no meu table nem assim funciona). Muito louco isso! Já tentei fazer de tudo olhei na web e sem sucesso alguém já passou por isso e poderia me ajudar?

Declarando:

private double latitude, longitude;
private Location location;
private LocationManager locationmanager;
private Address endereco;

Buscando latitude e longitude

public void latitudelongitude() {
    AlertDialog alerta;
    Location location;
    LocationManager locationmanager;
    Address endereco;

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        // GPS desabilitado
    } else {
        locationmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        location = locationmanager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    }

    if (location != null) {
        latitude = 0.0;
        latitude = location.getLatitude();
        longitude = 0.0;
        longitude = location.getLongitude();
       
      endereco = buscarendereco(latitude, longitude);
      // Setando a localidade
      String localidade = "";
      localidade = endereco.getAddressLine(0);
      } else {
        // Menssange
        Toast.makeText(getBaseContext(), "SEU GPS NÃO ESTÁ HABILITADO!", Toast.LENGTH_LONG).show();
        startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
    }
}
// Buncando o endereço pelo latidude e longitude

public Address buscarendereco(double latidude, double longitude) {
    try {
        Geocoder geocoder;
        Address address = null;
        List<Address> addresses;

        geocoder = new Geocoder(getApplicationContext());
        addresses = geocoder.getFromLocation(latidude, longitude, 1);

        if (addresses.size() > 0){
            address = addresses.get(0);
        }

        return address;
    } catch (Exception e) {
        // Menssange
        Toast.makeText(getBaseContext(), "OCORREU UM ERRO TENTE NOVAMENTE!", Toast.LENGTH_LONG).show();
        return null;
    }
}

Descobri o problema mesmo o gps habilitado tenho que solicitar permissão para o seu uso, assim ficou o meu código.

public void latitudelongitude() {
AlertDialog alerta;
Location location;
LocationManager locationmanager;
Address endereco;

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // GPS desabilitado
} else {
  // Dando permisão do uso do serviço do gps o 1 significa SIM)
  ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
  // Carregando o serviço de localização
  locationmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  // Processo ficará sempre execução atento na mudança de localidade
  LocationListener locationlistener = new LocationListener() {
         public void onLocationChanged(Location location) {
         }

         public void onStatusChanged(String provider, int status, Bundle extras) {
         }

         public void onProviderEnabled(String provider) {
         }

         public void onProviderDisabled(String provider) {
         }
     };
     locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,locationlistener);
    // localizando a posição 
    location = locationmanager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}

if (location != null) {
    latitude = 0.0;
    latitude = location.getLatitude();
    longitude = 0.0;
    longitude = location.getLongitude();
   
  endereco = buscarendereco(latitude, longitude);
  // Setando a localidade
  String localidade = "";
  localidade = endereco.getAddressLine(0);
  } else {
    // Menssange
    Toast.makeText(getBaseContext(), "SEU GPS NÃO ESTÁ HABILITADO!", Toast.LENGTH_LONG).show();
    startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}

}