Для одного разрешения я могу использовать permissionsdispatcher в java и kotlin – но когда дело доходит до нескольких разрешений вроде этого:
@NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH})
У меня проблема с kotlin – она не принимает больше одного параметра там – отлично работает с java
В Java {}
представляет собой создание массива, и в этом контексте в Kotlin {}
случайно создает лямбда-выражение, и не может быть определено, что вы намереваетесь, потому что код внутри лямбда недействителен.
Таким образом, вы говорите @NeedsPermission(someFunctionReferenceThatIsInvalid)
вместо передачи в массиве разрешений как @NeedsPermission(array)
В аннотации массив обрабатывается как vararg
поэтому вы можете просто перечислить элементы:
@NeedsPermission(Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH)
Если он рассматривается как массив, вы должны использовать функцию arrayOf
:
@NeedsPermission(arrayOf(Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH))
Примеры создания массива, а затем с помощью оператора *
spread в основном делают, а затем уничтожают массив, и это необязательно.
@NeedsPermission(arrayOf(Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH))
В java @NeedsPermission({...})
фигурные скобки {...}
– это всего лишь сокращение для создания массива. В kotlin вы должны явно сказать, что это массив, потому что {}
зарезервирован для лямбда-выражений.