Требуется аннотация "указать только одно из значений, anyOf или allOf"
Пытаясь применить @RequiresPermission
аннотация, как описано в технических документах.
Пример показывает
Если вам требуется хотя бы одно из набора разрешений, вы можете использовать атрибут anyOf:
@RequiresPermission(anyOf = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}) public abstract Location getLastKnownLocation(String provider);
Я пытаюсь применить его в своем коде, который выполняет сканирование Bluetooth:
@RequiresPermission(anyOf = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION})
private void initiateConnectionProcess() {
startScanAndBroadcast();
}
который дает ошибку
Укажите только одно из значений, anyOf или allOf
Я думал, может быть startScanAndBroadcast()
имеет allOf
аннотация, которая может вызвать проблемы, если аннотации разрешаются рекурсивно, но этот метод вообще не имеет аннотаций.
Ошибка остается, если тело метода пустое.
Ошибка исчезнет, если я не перечислю разрешения:
@RequiresPermission(anyOf = { })
private void initiateConnectionProcess() {
Что здесь не так?
1 ответ
Обновить:
Решено в Android Studio 2.2 превью 3
После некоторой проверки кажется, что эта ошибка возникает в Android Studio 2.2 preview 2, но не в Android Studio 2.1.1.
Даже при том, что это показывает как ошибку, сборки успешны, и аннотация работает должным образом.
Похоже, это ошибка в линтере.
Подал отчет об ошибке здесь.
Я предполагаю, что вы уже поняли это, но вам нужно использовать квадратные скобки вместо фигурных скобок.
Пример:
@RequiresPermission(anyOf = [ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION])
Я использую Kotlin и последнюю версию Android Studio. Я вижу, что некоторые упоминали, что это было исправлено, но, насколько я могу судить, это не исправлено.
Версия Android Studio
Фигурные скобки