开源项目:使用 Activity Result API + Kotlin 扩展函数 封装权限请求库

使用Activity Result API与Kotlin扩展封装权限请求库
本文介绍了在Android中,随着requestPermissions()和onRequestPermissionsResult()被弃用,如何利用Activity Result API进行权限请求。通过示例展示了如何使用新API进行单一和多权限请求,并提供Kotlin扩展函数进行封装,简化权限管理。同时提供了项目的演示地址和作者的其他技术资源链接。

前言

市面上权限请求的库很多,而前段时间官方刚刚将 requestPermissions() + onRequestPermissionsResult() API 弃用,那么官方的替代方案是什么呢?本文将介绍 Activity Result API 进行权限请求的使用以及如何借助 Kotlin 扩展函数自己封装一个权限请求库

Activity Result API

在 Android Jetpack Activity 1.2.0-alpha02Fragment 1.3.0-alpha02 中,Google 提供了全新的 Activity Result API 来替换 startActivityForResult() + onActivityResult()requestPermissions() + onRequestPermissionsResult()。详情可移步 官方文档[1],中文可以参考 秉心说[2] 的 是时候丢掉 onActivityResult 了 ![3],有些 API 的名字发生了变化,请留意

requestPermissions() / onRequestPermissionsResult() 被弃用

紧接着在 Activity 1.2.0-alpha04Fragment 1.3.0-alpha04 版本中,

startActivityForResult()+onActivityResult()requestPermissions()+onRequestPermissionsResult()被标记为弃用,而在Fragment 1.3.0-alpha05 这些标记弃用的方法内部已改为使用 ActivityResultRegistry 实现

新 API 的使用

新的 API 使用非常简单,分为单一权限请求,和多权限请求,Activity 和 Fragment 使用方法相同

单一权限请求

val permission = Manifest.permission.WRITE_EXTERNAL_STORAGE
registerForActivityResult(ActivityResultContracts.RequestPermission()) { result ->
// 请求结果,result 为 boolean true 代表已授权,false 代表未授权
}.launch(permission)

多权限请求

val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA)

registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { result: MutableMap<String, Boolean> ->
// 请求结果,返回一个map ,其中 key 为权限名称,value 为是否权限是否赋予
}.launch(permissions)

配合 Kotlin 扩展函数进行封装

配合 Kotlin 的扩展函数,我们可以将权限请求的逻辑进行封装。

开发过程中,我们申请权限时关注的就是权限是否申

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值