news 2026/6/8 2:02:03

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/6/4 20:09:16

用Python代码掌控Minecraft世界:Raspberry Jam Mod完全指南

用Python代码掌控Minecraft世界&#xff1a;Raspberry Jam Mod完全指南 【免费下载链接】raspberryjammod Raspberry Jam Mod - a Mod Forge Minecraft mod implementing most of Raspberry Juice/Pi API 项目地址: https://gitcode.com/gh_mirrors/ra/raspberryjammod …

作者头像 李华
网站建设 2026/6/2 12:18:13

Fashion-MNIST实战指南:3大核心问题与解决方案

Fashion-MNIST实战指南&#xff1a;3大核心问题与解决方案 【免费下载链接】fashion-mnist fashion-mnist - 提供了一个替代MNIST的时尚产品图片数据集&#xff0c;用于机器学习算法的基准测试。 项目地址: https://gitcode.com/gh_mirrors/fa/fashion-mnist 当你第一次…

作者头像 李华
网站建设 2026/6/5 16:38:35

Unity脚本资源大揭秘:5大核心领域全面解析

Unity脚本资源大揭秘&#xff1a;5大核心领域全面解析 【免费下载链接】Unity-Script-Collection A maintained collection of useful & free unity scripts / librarys / plugins and extensions 项目地址: https://gitcode.com/gh_mirrors/un/Unity-Script-Collection …

作者头像 李华
网站建设 2026/6/4 3:08:13

STM32平台下蜂鸣器驱动电路核心要点详解

STM32平台下蜂鸣器驱动电路设计&#xff1a;从原理到实战的完整指南在嵌入式系统开发中&#xff0c;声音反馈是最直观、最有效的人机交互方式之一。无论是按下按键时的一声“滴”&#xff0c;还是设备故障时急促的报警音&#xff0c;蜂鸣器都扮演着不可或缺的角色。而作为当前主…

作者头像 李华
网站建设 2026/6/5 3:05:00

AI语音克隆终极指南:10分钟掌握so-vits-svc完整教程

AI语音克隆终极指南&#xff1a;10分钟掌握so-vits-svc完整教程 【免费下载链接】so-vits-svc 基于vits与softvc的歌声音色转换模型 项目地址: https://gitcode.com/gh_mirrors/sovit/so-vits-svc 还在为复杂的AI语音技术望而却步吗&#xff1f;想要快速实现声音转换却不…

作者头像 李华
网站建设 2026/5/28 15:07:39

LLaVA-v1.5-13B终极指南:多模态AI的深度解析与实践应用

LLaVA-v1.5-13B终极指南&#xff1a;多模态AI的深度解析与实践应用 【免费下载链接】llava-v1.5-13b 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/llava-v1.5-13b 在人工智能技术日新月异的今天&#xff0c;多模态模型正成为推动AI发展的关键力量。LLaVA-…

作者头像 李华