前一段时间,我eazypermissions为运行时权限开源了一个Android库,该库允许您在协程中请求权限(没有回调yay🎉),并且还支持LiveData。如果您有兴趣,可以阅读更多内容👇
eazy permissions 运行时权限库简介。
该库现在提供了Kotlin DSL来请求权限。在本文中,我们将讨论DSL API以及如何使用DSL请求权限。让我们开始吧。
Kotlin DSL请求权限
请求权限时,重要的三件事是权限,请求代码和结果。DSL API专注于这三件事,并允许您简洁明了地请求权限。让我们看看如何。
如果要在“Activity/Fragment”中请求权限,则可以请求权限,如下所示。
现在让我们了解上面的DSL。
该requestPermissions函数是Activity和Fragment的扩展函数,因此您可以直接从activity和fragment调用它。它需要vararg
您要请求的许可权,并在接收器上启用lambda PermissionRequest。由于它是带有接收器的lambda,因此PermissionRequest您可以直接访问的成员PermissionRequest。在拉姆达,初始化的两个成员PermissionRequest,requestCode
和resultCallback
。
这是PermissionRequest类的定义。
resultCallback
带有接收器的lambda,PermissionResult并且库将调用此回调以获得结果。在lambda中,您可以直接将权限结果称为this
。PermissionResult只是封装所有可能结果的简单密封类,即授予,拒绝,永久拒绝和显示理性的权限。
这是requestPermissions
Activity和Fragment上扩展功能的签名。
如果您在“Fragment/Activity”之外请求权限,则可以请求权限,如下所示。
唯一的区别是您需要调用PermissionManager.requestPermissions
Fragment / Activity实例作为附加参数。我们之前看到的扩展函数在内部将调用委托给该函数。
这是PermissionManager.requestPermissions
功能的签名。
您如何在项目中包含库。
implementation 'com.sagar:dslpermission:2.0.0'
这就是Kotlin DSL新功能的全部内容。请转到下面的GitHub存储库,以获取有关该库的更多详细信息。
一个轻量级的Android库,它包装了运行时权限的样板代码,并允许您请求权限…
github.com
翻译自:https://android.jlelse.eu/kotlin-dsl-for-runtime-permissions-ba04dbe0de2c
网友评论