Я понимаю, почему 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 знала, что я проверяю разрешение?