美文网首页Kotlin系列kotlinAndroid
Kotlin 协程 一行代码动态申请权限(CoroutinePe

Kotlin 协程 一行代码动态申请权限(CoroutinePe

作者: 则卷滔滔 | 来源:发表于2020-06-17 17:44 被阅读0次

前言

自6.0之后 所有的敏感权限都需要动态申请,市面上随之出现比较多的权限框架,easypermissions(google出品)、AndPermission、RxPermissions(结合RxJava)。随着 kotlin的逐渐普及,使用协程的人也越来越多,因此就有了本文,结合协程一行代码动态申请权限。
通过创建Fragment结合google提供的easypermissions库封装动态申请权限 成功后继续操作。

  • 实现dialog提示语阐述权限用途
  • 支持禁用后跳转到应用设置界面手动开启权限
  • 实现协程一行代码 顺序执行 逻辑清晰明了

上代码

private val permsSd = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE)
        
CoroutineScope(Dispatchers.Main).launch {
        try {
            requestPermissionsForResult(*permsSd, rationale = "为了更好的提供服务,需要获取存储空间权限")
            //todo 成功 接下来处理逻辑  比如 打开相册
            startActivity(Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI))
        } catch (e: Exception) {
        }
}

没错就是这么简单 配合viemodel封装一层try catch 更丝滑!
没有回调,没有链式调用,从上到下执行 简单易用!

如何使用

在项目主工程的build.gradle文件中加入:

allprojects {
    repositories {
        .......
        maven {
            url  "https://dl.bintray.com/liul1/maven"
        }
        ......
}

在需要使用moudel的build.gradle文件中加入:

implementation 'com.github.lilei:coroutine-permissions:1.0.0'

需要看源码的朋友移步:https://github.com/liulilei/CoroutinePermissions
如果对您有帮助,请动动手指点个star,谢谢!

本文参考资料:

https://github.com/diao-jian/CoroutinePermissions
https://github.com/florent37/InlineActivityResult

相关文章

网友评论

    本文标题:Kotlin 协程 一行代码动态申请权限(CoroutinePe

    本文链接:https://www.haomeiwen.com/subject/opssxktx.html