Solicitando permissões ao usar o LocationManager

Comecei a programar com o Android e, até agora, mexi um pouco com botões, visualizações de texto e algumas atividades, mas gostaria de começar com serviços e localizações de GPS. Para praticar um pouco, estou criando um aplicativo simples que apenas mostra as coordenadas do usuário. Criei minha própria classe de serviço com alguns métodos, mas sempre que tento implementar a seguinte, meu aplicativo falha:

    @TargetApi(23)
public Location getLocation(){
    try{
        locationManager = (LocationManager)this.ctx.getSystemService(LOCATION_SERVICE);
        gpsActivado = locationManager.isProviderEnabled(locationManager.GPS_PROVIDER);
    }catch(Exception e){
        e.printStackTrace();
    }


    if(gpsActivado && (ctx.checkSelfPermission("ACCESS_FINE_LOCATION") == PackageManager.PERMISSION_GRANTED)){
        locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER
                ,1000*60
                ,2
                ,this);
        return locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);

    }else{
        return null;
    }

}

Com algumas mensagens de depuração, eu sei que o problema está relacionado à verificação de permissões. O que há de errado nisso? Agora você tem outro método para verificar se eu tenho as permissões necessárias? Por alguma razão, eu não gosto do que estou usando.

Desde já, obrigado :)

PS: estou usando a API 16

questionAnswers(1)

yourAnswerToTheQuestion