android网络动态获取权限,基于JetPack实现的权限动态获取

最近在学习如何使用Jetpack以及kotlin,相较于以往使用的onActivityResult,androidx-activity 1.2.0-alpha02及Fragment 1.3.0-alpha02版本中新追加了api ActivityResultContract

环境配置

为使用ActivityResultContract,我们需要在gradle文件中添加相关依赖,这里我使用的是alpha03版本

implementation "androidx.activity:activity-ktx:1.2.0-alpha03"

implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha03'

复制代码

使用方法

ActivityResultContract和Fragment可以通过registerForActivityResult()函数创建launcher,接着通过调用launcher.launch(intent)进行使用

由于版本或其他不可抗力,我在使用过程中发现registerForActivityResult()不可使用,查阅资料发现,registerForActivityResult()是prepareCall()的重命名,于是只能暂时使用prepareCall()

读取图片

设置launcher

private val launcher = prepareCall(ActivityResultContracts.GetContent()) { uri ->

Toast.makeText(context,"uri:$uri",Toast.LENGTH_SHORT).show()

}

复制代码

launcher调用launch

launcher.launch("image/*")

复制代码

权限获取(RequestPermission)

前提

如需动态获取对应权限,应当在AndroidManifest下对应填写相应语句,如WRITE_EXTERNAL_STORAGE

复制代码

设置launcher

val requestPermissionLauncher =

prepareCall(

ActivityResultContracts.RequestPermission()

) { isGranted: Boolean ->

if (isGranted) {

Toast.makeText(context, "result: granted", Toast.LENGTH_LONG).show()

} else {

Toast.makeText(context, "result:fail", Toast.LENGTH_LONG).show()

}

}

复制代码

launcher调用launch

requestPermissionLauncher.launch(WRITE_EXTERNAL_STORAGE)

复制代码

总结

老菜鸡了,看个jetpack的权限调用看了一个下午,写个文章记录一下踩过的坑吧,确实使用jetpack会让代码整洁许多,好东西好东西,继续加油

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[基于JetPack实现的权限动态获取]http://www.zyiz.net/tech/detail-145260.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值