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式保留的。