有没有办法参考
permission.permissionName
在此代码中:
fun Activity.isPermissionGranted(vararg permission : AppPermission) = (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED)
因为我得到“未解析的引用:permissionName”错误。
AppPermission 类签名如下所示:
sealed class AppPermission(val permissionName: String,
val requestCode: Int,
val deniedMessageId: Int,
val explanationMessageId: Int) {...}
说实话,我甚至不确定在这里使用varargs是个好主意,所以如果它完全疯了,请纠正我。
基本上我正在尝试为Android>实现授予权限逻辑; 5.0并且我不确定我们最终需要多少权限,所以这就是为什么我想在这里使用varargs。
答案 0 :(得分:1)
vararg
基本上只是用于创建数组的语法糖。因此,您需要将参数permission
视为Array<AppPermission>
,这意味着您可能希望这样做:
fun Activity.isPermissionGranted(vararg permissions : AppPermission) = permissions.all { permission -> (PermissionChecker.checkSelfPermission(this, permission.permissionName) == PackageManager.PERMISSION_GRANTED) }
此处,all
是标准库中的函数,它为数组中的每个值计算Boolean
,如果所有true
都为{Boolean
,则返回true
1}}。