Предупреждение о проверке разрешения все еще отображается, если checkSelfPermission () извлечен в метод - PullRequest
0 голосов
/ 13 сентября 2018

Я понимаю, почему Android Studio показывает предупреждение MissingPermission.

Для вызова требуется разрешение, которое может быть отклонено пользователем: код должен явно проверять наличие разрешения (с checkPermission) или явно обрабатывать потенциальное исключение SecurityException меньше ... (⌘F1)

Если есть аннотированный метод @RequiresPermission, необходимо проверить разрешение.Итак, чтобы предотвратить предупреждение, мне нужно сделать:

if (ActivityCompat.checkSelfPermission(this,
        Manifest.permission.PERMISSION) == PackageManager.PERMISSION_GRANTED) {
    methodThatNeedsAPermission();
}

Теперь это довольно длинный код для проверки состояния.Кроме того, я хочу, чтобы мой код был чистым, я хочу извлечь проверку, чтобы отделить бизнес-логику и код Android, связанный с пользовательским интерфейсом / контекстом, поэтому я хотел бы иметь:

public void startDoingSomething() {
    if (hasPermission()) {
        methodThatNeedsAPermission();
    }
}

...

public boolean hasPermission() {
    return ActivityCompat.checkSelfPermission(this,
        Manifest.permission.PERMISSION) == PackageManager.PERMISSION_GRANTED;
}

Но с этимAndroid Studio по-прежнему показывает предупреждение.

Конечно, я мог бы подавить предупреждение с помощью @SuppressLint("MissingPermission"), но почему я должен? Я проверяю разрешение.

Есть ли чистый способ обойти это?Какую-то аннотацию, которую я бы добавил к методу hasPermission(), чтобы Android Studio знала, что я проверяю разрешение?

1 Ответ

0 голосов
/ 12 ноября 2018

У меня была такая ситуация, и я решил пойти по этому пути

Файл> Настройки> Редактор> Проверки> Android, нажмите вниз указатель
Lint щелкните указатель вниз> Правильность нажмите указатель вниз
затем в разделе «Сообщения» прокрутите вниз до «Отсутствующие разрешения» и снимите флажок
Нажмите Применить и OK

Линт отличный, но не всегда правильный

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...