参考可变参数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
。