news 2026/4/23 15:46:22

PictureSelector android的发展和我修改全选功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PictureSelector android的发展和我修改全选功能

fork from https://github.com/buhuiming/PictureSelector

fork from https://github.com/LuckSiege/PictureSelector

PictureSelector

背景

android的图片选择器的发展故事是这样的:

蛮荒时代

该有的权限申请一下即可。应用内显示。

在这个阶段,PictureSelector发展壮大,几乎成为了开源图片选择器的唯一选择。

主要就是查询相册,将content://media/external/images/media/12345,content://media/external/video/media/12346等图片,视频,音频做显示,库内部做了极多的参数配置,极多的Engine提供给开发者去定制比如图片加载器,播放器加载器,还考虑异步加载,快速加载,样式等方方面面。

android10~android13阶段

应用无法通过WRITE_EXTERNAL_STORAGE权限,随意往外置目录写入;

  • 需要使用MediaStore.Images/MediaStore.Video/MediaStore.Audio来写回系统的相册;

  • 或者android:requestLegacyExternalStorage="true"(targetSdkVersion=29) 仅限android10。而且api 32,已经彻底移除;

  • 或者ActivityResultContracts.OpenDocumentTree()来做目录选择授权,但是可能需要二次申请。

图片选择框架,需要追加一堆权限申请,并且逐渐抛弃/兼容WRITE_EXTERNAL_STORAGE

android13阶段

Google隐私权限继续加强,做了细分权限。

<uses-permissionandroid:name="android.permission.READ_MEDIA_IMAGES"/><uses-permissionandroid:name="android.permission.READ_MEDIA_AUDIO"/><uses-permissionandroid:name="android.permission.READ_MEDIA_VIDEO"/>

这个时候开始,已经不推荐使用第三方的图库选择框架了。推荐使用ActivityResultContract+PickVisualMediaRequest后续简称Picker

对于非相册类app,googlePlay推荐,使用ActivityResultContract+PickVisualMediaRequest

会弹出一个好看的底部弹窗选择器。如果android12系统不支持的话,会调用到一个稍微难看的文件浏览器的界面,也算能往下兼容(如果是海外GMS框架下,会有兼容的picker支持)。

android14阶段

Google又加强了一把,弄了一个选择图册的时候,弹出一个先勾选临时的相册,再传递给应用去pick:

<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED"/>

android15阶段

需要兼容沉浸式。其实在android13-14也在逐步加强,到android15/16强制。

现在的情况

原项目LuckSiege/PictureSelector最后的版本v3.11.2定格在:Dec 17, 2023。
好在对于android14的细分权限也已经支持。没有对于android15的沉浸式加强。

buhuiming/PictureSelector进行了fork主要修正android15的沉浸式。

现在对于非普通应用,使用ActivityResultContract+PickVisualMediaRequest,又简单又轻松,而且重要的是,你的应用压根不需要任何权限。

我也fork了这个项目,做了修改:
https://github.com/jzlhll/PictureSelector.git

当设置了:

//不要设置该参数//.setSandboxFileEngine(new MeSandboxFileEngine())//设置maxSelectNum为int最大值.setMaxSelectNum(Integer.MAX_VALUE)

右上角就有全选模式和取消全选功能。
用于做一些相册导入导出的全选操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:34:10

如何用doccano在3天内完成高质量AI训练数据标注?

如何用doccano在3天内完成高质量AI训练数据标注&#xff1f; 【免费下载链接】doccano Open source annotation tool for machine learning practitioners. 项目地址: https://gitcode.com/gh_mirrors/do/doccano 还在为AI项目中的数据标注工作而苦恼吗&#xff1f;面对…

作者头像 李华
网站建设 2026/4/19 15:49:16

前后端分离房产销售系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着互联网技术的快速发展和房地产行业的数字化转型&#xff0c;传统的房产销售模式逐渐暴露出信息不透明、效率低下等问题。购房者往往需要耗费大量时间和精力实地看房&#xff0c;而开发商和中介机构也面临客户管理困难、交易流程繁琐等挑战。为解决这些问题&#xff0c…

作者头像 李华
网站建设 2026/4/22 22:37:31

如何打造你的专属AI语音助手:多语言智能对话体验

如何打造你的专属AI语音助手&#xff1a;多语言智能对话体验 【免费下载链接】Amadeus A side project that aims to replicate the Amadeus App shown in Steins;Gate 0. 项目地址: https://gitcode.com/gh_mirrors/am/Amadeus 在科技飞速发展的今天&#xff0c;拥有一…

作者头像 李华
网站建设 2026/4/18 21:46:14

基于UltraScale+的DDR4控制器仿真完整示例

深入实战&#xff1a;在UltraScale FPGA上构建并仿真DDR4控制器的完整路径你有没有遇到过这样的情况&#xff1f;项目进度卡在“等板子回来”——FPGA逻辑写好了&#xff0c;接口也连上了&#xff0c;结果第一次上电读不出DDR4数据&#xff0c;波形乱成一团。调试从“功能验证”…

作者头像 李华
网站建设 2026/4/17 13:25:57

如何在3小时内完成Kimi K2大模型本地部署?完整指南

如何在3小时内完成Kimi K2大模型本地部署&#xff1f;完整指南 【免费下载链接】Kimi-K2-Instruct-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Kimi-K2-Instruct-GGUF 想要在本地环境高效运行千亿参数大语言模型吗&#xff1f;Kimi K2大模型本地部署为…

作者头像 李华
网站建设 2026/4/18 20:33:51

微信AI助手终极指南:3步打造你的智能聊天机器人

微信AI助手终极指南&#xff1a;3步打造你的智能聊天机器人 【免费下载链接】wechat-bot &#x1f916;一个基于 WeChaty 结合 DeepSeek / ChatGPT / Kimi / 讯飞等Ai服务实现的微信机器人 &#xff0c;可以用来帮助你自动回复微信消息&#xff0c;或者管理微信群/好友&#xf…

作者头像 李华