Android: подавить предупреждение при вызове метода

Я пытаюсь сделать метод, который проверяет разрешения Android. Но когда я звоню, у меня появляется предупреждение о пропущенном разрешении.

Вот упрощение моего кода:

public void lintTestMethod(){
    if(isPermissionGranted()) {
        requiresLocationPermission();
    }
}

public boolean isPermissionGranted(){
    return true;
}

@RequiresPermission(anyOf = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
public void requiresLocationPermission(){

}

Я попытался добавить:

@SuppressLint("MissingPermission")
public boolean isPermissionGranted(){
    return true;
}

Но это не работает (я также пытался использовать SuppressWarning).

В идеале я бы не хотел изменять метод lintTestMethod.

У кого-нибудь есть идеи, как с этим бороться?

3 ответа

Я нашел обходной путь к своей проблеме, прочитав код lint, проверяющий разрешения ( Код). Решение состоит в том, чтобы назвать мой метод с именем 'isPermissionGranted': 'check*Permission'. Это не то решение, которое я искал, но оно работает. Если у кого-то есть лучший способ сделать это, я все еще заинтересован.

Вот интересная часть кода:

String name = node.astName().astValue();
if ((name.startsWith("check") || name.startsWith("enforce")) && name.endsWith("Permission")) {
      mChecksPermission = true;
      mDone = true;
}

Вы помещаете подавление в неправильное место:

Подавление единого оператора:

public void lintTestMethod(){
        if(isPermissionGranted()) {
            //noinspection MissingPermission
            requiresLocationPermission();
        }
    }

Метод подавления диапазона:

@SuppressWarnings("MissingPermission")
public void lintTestMethod(){
    if(isPermissionGranted()) {
        requiresLocationPermission();
    }
}

Это можно сделать с помощью меню быстрого исправления Android Studio.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Добавьте это в свой файл AndroidManifest.xml.

Другие вопросы по тегам