Android permission check GPS?

Preciso fazer esta chamada

Localiza localizacao = new Localiza();
localizacao.getLocalizacao(ListaMensagemActivity.this);

meu metodo esta assim

public class Localiza {
    List<Location> locs = new ArrayList<Location>();
    LocationListener listener;
    String numero, latitude, longitude, time;

    public void getLocalizacao(Context context) {


        LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);


        long tempo = 500; //5 minutos
        float distancia = 30; // 30 metros

        this.listener = new LocationListener() {

            @Override
            public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
                //Toast.makeText(getApplicationContext(), "Status alterado", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onProviderEnabled(String arg0) {
                //Toast.makeText(getApplicationContext(), "Provider Habilitado", Toast.LENGTH_LONG).show();

            }

            @Override
            public void onProviderDisabled(String arg0) {
                //Toast.makeText(getApplicationContext(), "Provider Desabilitado", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onLocationChanged(Location location) {


                if (location != null) {
                    locs.add(location);
                    numero = "" + locs.size();
                    latitude = Double.toString(location.getLatitude());
                    longitude = Double.toString(location.getLongitude());

                }

            }
        };

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, tempo, distancia, this.listener, null);
        Log.i("LOGae",latitude);
    }


}

agora esta falando para eu implementar o permission check, porem nao sei como proceder. Alguem tem uma idéia?

Agradeço desde já

A partir da versão 23 da API é preciso confirmar as permissões definidas no manifest

Exemplo

fiz assim, mas acho que esta tudo errado. Não sei oque colocar

if (ContextCompat.checkSelfPermission(context,
            android.Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(context,
                android.Manifest.permission.ACCESS_FINE_LOCATION)) {

        } else {

            ActivityCompat.requestPermissions(context,
                    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                    android.Manifest.permission.ACCESS_FINE_LOCATION);

        }
    }
if (ContextCompat.checkSelfPermission(context,
            android.Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(context,
                android.Manifest.permission.ACCESS_FINE_LOCATION)) {
            //Aqui coloca a ação caso a permissão esteja concedida
        } else {

            ActivityCompat.requestPermissions(context,
                    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                    android.Manifest.permission.ACCESS_FINE_LOCATION);
            //Aqui coloca um alert/toast para dizer que a ação não pode ser executada sem permissão e fecha a activity
        }
    }

Olha onde estao os erros. Parece que é pq a classe nao é uma activity. Mas eu queria que fosse algo estático, pra acessar uma classe que é uma activity, precisa ir pelo intent correto?

if (ContextCompat.checkSelfPermission(context,
            android.Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(context,
                android.Manifest.permission.ACCESS_FINE_LOCATION)) {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, tempo, distancia, this.listener, null);
        } else {

            ActivityCompat.requestPermissions(context,
                    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                    android.Manifest.permission.ACCESS_FINE_LOCATION);
            
            Toast.makeText(context,"Aprova ae sangue bom! para de frescura",Toast.LENGTH_LONG).show();
        }
    }

Não, o erro ocorre por que a solicitação para verificação exige um array de String e o que você tem é um inteiro.

onde? estou perdido.

sao 2 erros, mas la falava pra eu preencher com a activity.

nao entendi onde colocar esse array

olha só isso, este é o doc

ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_CONTACTS},
            MY_PERMISSIONS_REQUEST_READ_CONTACTS);

esta pedindo thisActivity. dai eu fui e coloquei o contexto, que eu recebo la no inicio do metodo

estou indo por um tutorial na net. Mas nao sei pq esse LocationServices.API não consigo achar no android

public class Localiza extends AppCompatActivity implements
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_localiza);
    
}

private synchronized void callConnection(){

    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
    }


}

protected void onStart() {
    mGoogleApiClient.connect();
    super.onStart();
}

protected void onStop() {
    mGoogleApiClient.disconnect();
    super.onStop();
}

@Override
public void onConnected(Bundle connectionHint) {

    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
    if (mLastLocation != null) {
        mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
        mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
    }

}

@Override
public void onConnectionSuspended(int i) {
    Log.i("LOG","onConnectionSuspended("+i+")");
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}

}