对于一个权限,我可以在java和kotlin中使用permissionsdispatcher - 但是当涉及到这样的多个权限时:
@NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH})
我在kotlin上遇到问题 - 它不接受多个参数 - 适用于java
答案 0 :(得分:4)
在Java中,{}
表示创建一个数组,在Kotlin的这个上下文中,{}
意外地创建了一个lambda expression并且无法确定您的意图,因为其中的代码lambda无效。
所以你说@NeedsPermission(someFunctionReferenceThatIsInvalid)
而不是传递一组权限@NeedsPermission(array)
在注释中,数组被视为vararg
,因此您只需列出元素:
@NeedsPermission(Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH)
如果将其视为数组,则使用arrayOf
函数:
@NeedsPermission(arrayOf(Manifest.permission.BLUETOOTH_ADMIN, Manifest.permission.BLUETOOTH))
创建数组然后使用*
spread operator的示例基本上是在做,然后撤消数组,这是没有必要的。
答案 1 :(得分:0)
@NeedsPermission(arrayOf(Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH))
在java @NeedsPermission({...})
中,大括号{...}
只是创建数组的简写。在kotlin中,你必须明确地说它是一个数组,因为{}
是为lambda表达式保留的。