参考可变参数Kotlin

有没有办法参考

permission.permissionName

在这个代码中:

fun Activity.isPermissionGranted(vararg permission : AppPermission) = (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED) 

至于我得到“未解决的引用:权限名称”错误。

AppPermission类签名看起来像这样:

 sealed class AppPermission(val permissionName: String, val requestCode: Int, val deniedMessageId: Int, val explanationMessageId: Int) {...} 

说实话,我甚至不确定在这里使用可变参数是一个好主意,所以如果它是完全疯狂的,请纠正我。

基本上我试图为Android> 5.0实现授予权限逻辑,我不知道有多少权限,我们将最终需要,所以这就是为什么我想在这里使用可变参数。

vararg基本上就是创建数组的语法糖。 因此,您将需要像参数permission一样处理Array<AppPermission> ,这意味着您可能需要这样做:

 fun Activity.isPermissionGranted(vararg permissions : AppPermission) = permissions.all { permission -> (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED) } 

在这里, all都是标准库中的一个函数,它为数组中的每个值计算一个Boolean值,如果所有这些Boolean都为true ,则返回true