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.