permissionsdispatcher和多个@ NeedsPermission与kotlin

对于一个权限,我可以在java和kotlin中使用permissionsdispatcher – 但是当涉及到像这样的多个权限时:

@NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH}) 

我在kotlin上遇到一个问题 – 它不能接受多个参数 – 可以和java一起工作

在Java中, {}代表创建一个数组,在Kotlin的这个上下文中, {}意外地创建了一个lambdaexpression式,并且由于lambda内部的代码是无效的,所以无法确定您想要的结果。

所以你说@NeedsPermission(someFunctionReferenceThatIsInvalid)而不是作为@NeedsPermission(array)传递一个权限@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中,你必须明确地说它是一个数组,因为{}是为lambdaexpression式保留的。