最近在学习如何使用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会让代码整洁许多,好东西好东西,继续加油

关于找一找教程网

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

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

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

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

  1. android 网络wifi定位服务器,基于位置指纹算法的Android平台WiFi定位系统

    近年来,随着城域无线基础网络的发展,热点(AP)的覆盖范围已大大增加. 由于对定位服务的需求增加以及WiFi应用的扩展,WiFi定位已成为一种有效的定位方法. GPS卫星定位是最重要的定位方法. 它需 ...

  2. c语言动态扫描原理,基于视觉暂留的动态扫描LED旋转屏

    2.3 红外解码 红外遥控器与电器之间的通信存在一个通信协议,一般是单向的通信协议.这个单向的通信协议称为红外遥控编码协议.本文使用NEC红外编码协议,当发射器按键按下后,即有遥控码发出,所按的键不同 ...

  3. Android 获取Wifi列表详解(包含动态权限申请)

    WLAN 扫描流程 扫描流程分为三步: 为 SCAN_RESULTS_AVAILABLE_ACTION 注册一个广播监听器,系统会在完成扫描请求时调用此监听器,提供其成功/失败状态.对于搭载 Andr ...

  4. Ant Design Pro v5 获取动态菜单与基于角色权限管理视频教程(33 个视频)

    Ant Design Pro v5 获取动态菜单与基于角色权限管理视频教程(33 个视频) 很多人问如何获取动态菜单的,所以在 antd prov 5 来讲一下角色管理的.从最基础的用户管理,角色管理 ...

  5. android悬浮动态权限,Android 获取判断是否有悬浮窗权限的方法

    现在很多应用都会用到悬浮窗,很多国产rom把悬浮窗权限加入控制了,你就需要判断是否有悬浮窗权限,然后做对应操作. Android 原生有自带权限管理的,只是被隐藏了.看android源码在androi ...

  6. android mvvm框架搭建_轻松搭建基于JetPack组件的MVVM框架

    原文链接:轻松搭建基于JetPack组件的MVVM框架 - 掘金 Brick github gitee 介绍 辅助android开发者搭建基于JetPack组件构建MVVM框架的注解处理框架.通过注解 ...

  7. Android 网络请求、网络状态及各种权限判断

    一.判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (C ...

  8. 基于Http协议的Android网络编程

    之前写过一篇Android网络编程<浅谈android网络编程>,随着了解了更多Android知识,我意识到HttpClient已经不推荐使用了,更是在Android 6.0中被废弃了,原 ...

  9. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

最新文章

  1. linux 安装 nodejs
  2. loader调用过程
  3. 倾向得分匹配的stata命令_计量方法的适用条件汇总(二):倾向得分匹配
  4. 各种环境下的渗透测试
  5. Android安全问题 抢先开机启动
  6. NEW RToax logo
  7. 7 大版块 | 全面解读与认知支付系统
  8. 基于Python从头开始使用 RMSProp 进行梯度下降
  9. 优班图linux 命令,Linux 常用命令
  10. mysql卸载删除注册表
  11. 在linux上使用spi-lcd屏 ST7735
  12. 逐行解析linux kernel NIC驱动
  13. 5操作系统的运行机制和体系结构
  14. [网络流24题] 06 最长递增子序列(最多不相交路径,最大流)
  15. br-lan、eth0、eth1及lo
  16. 智能优化算法(源码)-食肉植物算法(Carnivorous Plant Algorithm ,CPA)
  17. Ubuntu开发环境_TLP电源管理模块、禁用笔记本触摸板
  18. Oracle数据库打补丁方法
  19. 程序员应该如何应对35岁中年危机?
  20. 华为服务器系统修复,服务器操作系统修复工具

热门文章

  1. DrawTool画笔之图形笔
  2. 备注:centos加永久路由
  3. 将计算机设置成交换机主机名,交换机命令
  4. 信息学奥赛一本通 1203:扩号匹配问题 | OpenJudge 2.2 2705:扩号匹配问题
  5. 信息学奥赛一本通(2072:【例2.15】歌手大奖赛)
  6. 最短路(HDU-2544)
  7. 图论算法 —— 图论概述
  8. 甲流病人初筛(信息学奥赛一本通-T1399)
  9. 30 PP配置-生产车间控制-定义计划策略
  10. aop阻止方法运行_新型AOP高级氧化高浓度COD废水处理系统介绍