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"})
Ответы
Ответ 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"})
Для вашего метода или класса
![андроидная студия без разрешения на проверку]()