permissionsdispatcher 和 multiple @NeedsPermission's with kotlin
permissionsdispatcher and multiple @NeedsPermission's with kotlin
对于一个权限,我可以在 java 和 kotlin 中使用 permissionsdispatcher - 但是当涉及到多个权限时,如下所示:
@NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH})
我在 kotlin 上遇到问题 - 它接受的参数不超过一个 - 使用 java
可以正常工作
@NeedsPermission(arrayOf(Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH))
在java @NeedsPermission({...})
中,大括号{...}
只是一个shorthand 用于创建数组。在 kotlin 中,您必须明确声明它是一个数组,因为 {}
是为 lambda 表达式保留的。
在 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 的示例基本上是执行然后撤消数组,没有必要。
对于一个权限,我可以在 java 和 kotlin 中使用 permissionsdispatcher - 但是当涉及到多个权限时,如下所示:
@NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH})
我在 kotlin 上遇到问题 - 它接受的参数不超过一个 - 使用 java
可以正常工作@NeedsPermission(arrayOf(Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH))
在java @NeedsPermission({...})
中,大括号{...}
只是一个shorthand 用于创建数组。在 kotlin 中,您必须明确声明它是一个数组,因为 {}
是为 lambda 表达式保留的。
在 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 的示例基本上是执行然后撤消数组,没有必要。