Подтвердить что ты не робот

Android Studio - удалить предупреждение о безопасности

Я получаю местоположение пользователя через

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

Эта строка кода находится внутри метода, и перед вызовом этого метода я проверяю разрешения для времени выполнения Android. Только если разрешение доступно от пользователя, я вызываю этот метод. Код работает отлично.

Проблема в том, что Android Studio по-прежнему показывает ошибку в этой строке, не признавая, что я уже проверил, прежде чем вызывать эту функцию.

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`

Теперь, как удалить это предупреждение? Я уже проверял разрешения и не хочу снова проверять, чтобы удалить это предупреждение. Я пробовал добавить @SuppressWarnings(), но не знаю, какую точную строку передать. @SuppressWarnings ({ "all" }) работает, но явно не рекомендуется.

Как удалить это предупреждение?

EDIT 1: Это мой точный код -

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);
}

Но если я поставлю проверку разрешения внутри метода getLocation(), предупреждение исчезнет. @SuppressWarnings ({ "MissingPermission" }) не работает.

EDIT 2: Я обнаружил, что единственный способ подавить предупреждение -

Добавление этого комментария поверх этой части кода -

//noinspection ResourceType

или добавив это -

@SuppressWarnings({"ResourceType"})
4b9b3361

Ответ 1

Вы ищете (обновленный, чтобы улучшить ясность):

@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);


       }
}

Редакция:

Правило правильного lint MissingPermission, но, похоже, есть ошибка, которая их неправильно сменяет.

Итак, попробуйте @SuppressWarnings ({ "ResourceType" }) тоже.

Ответ 2

Если вы хотите игнорировать это предупреждение, вы можете сделать это inline:

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

или на уровне метода:

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

Ответ 3

вы можете использовать Android Studio Inspection To Generate @SuppressWarnings({"MissingPermission"}) Для вашего метода или класса

андроидная студия без разрешения на проверку