当前位置: 首页 > news >正文

Compose - 权限申请

官方介绍

一、概念

二、使用 Accompanist Permissions

官方介绍

不同版本中,权限状态(如PermissionState)中获取属性的方法不同,例如在“0.23.1”中,通过 PermissionState.hasPermission 属性拿到是否通过的 Boolean 值,在“0.35.0-alpha”中,通过 PermissionState.status.isGranted 属性拿到。

单个权限多个权限

添加权限

@Composable
fun rememberPermissionState(
    permission: String
): PermissionState

@Composable

fun rememberMultiplePermissionsState(
    permissions: List<String>
): MultiplePermissionsState

发起请求

fun launchPermissionRequest(): Unit

 fun launchMultiplePermissionRequest(): Unit

权限回调

@Composable
fun PermissionRequired(
    permissionState: PermissionState,
    permissionNotGrantedContent: @Composable (() -> Unit),
    permissionNotAvailableContent: @Composable (() -> Unit),
    content: @Composable (() -> Unit),

@Composable
fun PermissionsRequired(
    multiplePermissionsState: MultiplePermissionsState,
    permissionsNotGrantedContent: @Composable (() -> Unit),
    permissionsNotAvailableContent: @Composable (() -> Unit),
    content: @Composable (() -> Unit),
)

2.1 添加依赖 

implementation "com.google.accompanist:accompanist-permissions:0.35.1-alpha"

2.2 单个权限申请

val permissionState = rememberPermissionState(Manifest.permission.CAMERA
)PermissionRequired(permissionState = permissionState,permissionNotGrantedContent = {    //还未申请或点击了拒绝Button(onClick = { permissionState.launchPermissionRequest() }) {Text("点击申请")}},permissionNotAvailableContent = {    //点击了不再询问Text("无权限")}
) {    //点击了通过Text("已授予")
}

2.3 多个权限申请

val permissionState = rememberMultiplePermissionsState(listOf(Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.RECORD_AUDIO)
)LaunchedEffect(Unit) {permissionState.launchMultiplePermissionRequest()
}

三、使用 rememberLauncherForActivityResult

http://www.lryc.cn/news/384100.html

相关文章:

  • 第十九条:要么为继承而设计并提供文档说明,要么就禁止继承
  • Node.js全栈指南:浏览器显示一个网页
  • Linux远程桌面(Ubuntu/Deepin)——安装和使用 VNC 及通过 noVNC 实现浏览器实现远程桌面访问教程
  • 2024年最新通信安全员考试题库
  • SpringMVC系列八: 手动实现SpringMVC底层机制-下
  • 【昇思初学入门】第八天打卡-模型保存与加载
  • 喜报!极限科技新获得一项国家发明专利授权:“搜索数据库的正排索引处理方法、装置、介质和设备”
  • 深入探讨:UART与USART在单片机中串口的实际应用与实现技巧
  • Windows上PyTorch3D安装踩坑记录
  • 操作符详解(上) (C语言)
  • 使用 audit2allow 工具添加SELinux权限的方法
  • 一文弄懂FPGA
  • Rust 中使用 :: 这种语法的几种情况
  • Ruby langchainrb gem and custom configuration for the model setup
  • 高校新生如何选择最优手机流量卡?
  • QT QML 生成二维码
  • IDEA中Maven--下载安装自己适配的版本---理解
  • 【osgEarth】Ubuntu 22.04 源码编译osgEarth 3.5
  • ASP.NET Core 6.0 使用 资源过滤器和行为过滤器
  • 电脑屏幕花屏怎么办?5个方法解决问题!
  • git 初基本使用-----------笔记
  • Redis-数据类型-Bit的基本操作-getbit-setbit-Bitmap
  • 统信UOS上鼠标右键菜单中添加自定义内容
  • 学习入门 chatgpt原理 一
  • 生命在于学习——Python人工智能原理(4.7)
  • 经典游戏案例:仿植物大战僵尸
  • [Day 18] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 【Mac】DMG Canvas for mac(DMG镜像制作工具)软件介绍
  • RAG分块方法 从固定大小到自然语言处理分块——深入研究文本分块技术
  • FFmpeg 系列