solicitação - Android Studio-remova o aviso de exceção de segurança



permissões android studio (2)

Eu estou recebendo a localização do usuário através

Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);

Essa linha de código está dentro de um método e, antes de chamar esse método, eu verifico as permissões de tempo de execução do Android. Somente se a permissão estiver disponível do usuário, eu chamo esse método. O código está funcionando perfeitamente.

O problema é que o Android Studio ainda mostra um erro nesta linha não reconhecendo que eu já verifiquei antes de chamar esta função.

Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`

Agora, como removo esse aviso? Já verifiquei as permissões e não quero verificar novamente apenas para remover esse aviso. Eu tentei adicionar @SuppressWarnings (), mas não sei exatamente a String para passar para isso. @SuppressWarnings ({"all"}) funciona, mas obviamente não é recomendado.

Como faço para remover esse aviso?

EDIT 1: Este é o meu código exato -

private void checkPermissions() {
    if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED)
        getLocation();  //Method called if I have permission
}

private void getLocation() {
    //Android studio shows warning at this line.
    Location location = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);
}

Mas se eu colocar a verificação de permissão dentro do método getLocation (), o aviso desaparece. @SuppressWarnings ({"MissingPermission"}) não funcionou.

EDIT 2: Eu descobri que a única maneira de suprimir o aviso é -

Adicionando este comentário em cima desse pedaço particular de código -

//noinspection ResourceType

ou adicionando isso -

@SuppressWarnings({"ResourceType"})

https://src-bin.com


Answer #1

Se você estiver olhando para ignorar esse aviso de lint, você pode fazer isso inline:

//noinspection MissingPermission
Location lastLocation = FusedLocationApi.getLastLocation(locationClient);

ou no nível do método:

@SuppressWarnings({"MissingPermission"})
public void toggleGPS(boolean enableGPS) {
  ...
}

Answer #2

Você está procurando (atualizado para melhorar a clareza):

@Override
@SuppressWarnings({"MissingPermission"})
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (LOCATION_REQUEST_CODE == requestCode) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            lastLocation = LocationServices.FusedLocationApi.getLastLocation(googleApiClient);


       }
}

EDITADO:

A regra de lint correta é MissingPermission , mas parece haver um bug que a coloca em erro para algumas pessoas.

Então, por favor, tente @SuppressWarnings ({"ResourceType"}) também.





runtime-permissions