Android Compose 使用 照片选择器 Photo Picker
从 Android 13(Tiramisu, API 33)开始,官方提供了系统级图片选择器 Photo Picker。而且无需申请权限,只需几行代码即可轻松接入。效果如下图:
在不支持 Photo Picker 的低版本机型中,该库会自动调用 ACTION_OPEN_DOCUMENT
打开系统资源管理器进行选择,问题也不大。
官方介绍 and 教程:Photo picker
1. androidx.activity 1.6.0+
首先把 androidx.activity 升级到最新版本:
dependencies { implementation 'androidx.activity:activity-compose:1.9.0' }
如果因为各种原因,不能升级依赖版本,参考该文 浅尝 Android 13 Photo Picker 无惧权限烦恼
2. Compose 使用组件
@Composable fun xxxCollectScreen( xxxViewModel: xxxViewModel, appNavController: NavController, modifier: Modifier, ) { //...... val pickMultipleMedia = rememberLauncherForActivityResult( //设置一个值允许选择照片的,且最多选择5个照片的照片选择器 ActivityResultContracts.PickMultipleVisualMedia(5)) { uris -> if (uris.isNotEmpty()) { //逻辑代码,uris是用户选择的媒体文件的Uri( List<Uri> ) //按照实际场景再处理即可 } } //...... Row { // begin Photo Picker region TextButton(onClick = { coroutineScope.launch { //只选照片 ActivityResultContracts.PickVisualMedia.ImageOnly pickMultipleMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) } }) { Icon( Icons.Filled.PhotoLibrary, null ) Spacer(Modifier.size(ButtonDefaults.IconSpacing)) Text("Add photo") } // end region } //...... }
3.各种 Photo Picker介绍
官方介绍 and 教程:Photo picker
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/18325967
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-07-26 树的DFS序