mfr
(MR)
1
背景
相较于iOS的沙盒化文件管理模式,Android的文件管理一向以“方便/混乱”令人又爱又恨。考虑到.nomedia屏蔽媒体文件仅仅是程序与系统间的君子协定,而部分程序有意无意忽视上述屏蔽,造成媒体选取界面被大量无用视频/图片(如在微信图片选取界面中出现的电视剧/教程等)占据,给用户带来了困扰。
如何最大程度减少手机中存储的大量媒体文件对其他程序的干扰,是十分有研究价值的问题。
Android10、11新增的分区存储特性,是解决程序随地大小便问题的勇敢尝试,自此 /Android/data/appname 文件夹成为了程序的专属领地。如果有一款文件管理器&媒体播放器能将媒体资源存储于自己的专属领地中,即可避免这些资源对其他应用的干扰。
需求功能
- 文件存储于/Android/data/appname 中
- 内置图片、音频、视频播放器,具有基础的媒体浏览能力
- 支持用外部浏览器打开及分享文件功能
- 支持在专属领地与公共存储空间之间批量移动文件
- 支持FTP服务器/SMB客户端/FTP客户端/SFTP客户端等功能,与第三方快速传输文件
- 注:需求有一点像在线视频客户端的离线缓存功能——无论客户端里缓存多少内容,都不会影响其他应用的媒体浏览体验。
谢谢各位大佬!
以目前的 Android 文件权限政策,应该是只有 Android 自带的 “文件” (com.google.android.documentsui
)应用能做到。
但是,很多国产 ROM 把这个 App 给隐藏了。有如下几种唤出这个 App 的方法
方法1:安装 Activity Manager,
并在其中搜索 com.google.android.documentsui
,找到 “文件” 应用,点击进去,找到其中的 FileActivity 活动,并为其创建快捷方式。
方法2:更换启动器为 Lawnchair该启动器的应用列表中包含了 “文件” 应用。
方法3:可能是最接近您需求的 使用 “Anemo” 应用。这个应用很值得一提,它可以创建一个隔离空间(但好像只能创建一个隔离空间),然后您可以将自己的文件存储在这个空间中,不需要使用的时候可以卸载这个存储空间,这样任何应用都无法找到这个空间。
这个应用启动后也可以唤起 Android 系统自带的文件应用。
- 图片可以用系统的图库打开,但好像无法翻页。
- 音频和视频可以用 Reex 或 MPV。
如果您还需要文本编辑器,可以试试这个应用:
com.google.android.documentsui
是 Android 系统级的文件管理应用,对存储空间具有完全控制权,您可以根据自己的需求把文件复制到任何地方。
您还可以使用这个应用,通过系统的 “分享” 菜单保存文件到指定位置:
您可以试试这个应用,或许有用:
这个,恕我才疏学浅,就不太清楚了。
3 个赞
二楼说的可能太乱了,我再开一楼简单概括一下:
简而言之,楼主的需求可能没有单个 App 能做到,但可以通过 Anemo 实现与楼主需求类似的存储方式,再通过其他软件辅助,满足楼主的其他需求。
2 个赞
tthy
(天天忽悠)
4
直接用多用户功能 创建一个单独的空间?
这个空间内 任意app能读取的文件相对原账户都是隔离的
1 个赞
mfr
(MR)
5
感谢大佬,学了很多,先去看下Anemo。
以目前的 Android 文件权限政策,应该是只有 Android 自带的 ‘文件’ (com.google.android.documentsui
)应用能做到。
其实我可能没有表述清楚。这里说的支持沙盒化存储,是希望找到一个文件管理器/媒体播放器,把媒体文件存储在自己的data文件夹里(而不是存储在 /storage/emulated/0),这是程序存储私有数据的规范方法;您说的自带“文件”的功能更像是将文件自由转移到其他程序的data文件夹里。
和前一条情况相似,如果A程序data文件夹里的文件共享给B程序打开,标准行为就是将文件单独传给B,这也是无法翻页的原因。如果A打开自己data文件夹里的数据则不会有这些限制。
root后的“存储空间隔离”可以实现上面的需求——它能重定向每个app的存储空间位置,使程序觉得自己在访问/storage/emulated/0,数据却实际存储于各自的data文件夹中,可惜root并不是容易达成的事情,以及被重定向并非app自身的预期行为,在文件分享、跳转第三方打开时有意外发生。
需求有一点像在线视频客户端的离线缓存功能
B站、腾讯视频等在线视频软件的实现方式便与上述的需求匹配——
- 视频缓存到本地后存储于自己的data文件夹,不影响其他应用的媒体选择界面,其他程序仍然干干净净
- 自己缓存的视频,自己可以播放
- 不支持外部打开及文件分享、文件移动、文件传输客户端,这是功能设计决定的
再次感谢大佬提供的方向!
mfr
(MR)
6
您说得很对,不过各家厂商对多用户功能的实现可能存在差异。
如我此前使用的MIUI14应用双开功能便创建了多用户,但用户之间的媒体文件是共享的,可以在主用户的微信媒体选取界面中看到分身用户/storage/emulated/*/中的文件;此前也使用过炼妖壶island,同样存在类似问题,且island会影响MIUI自带文件浏览器的功能,造成无法使用小米的文件互传服务。
其实 Fcitx 5 和 Termux 可以在系统原生的文件 App 中创建一个快捷方式,直接指向自己在 /Android/data/
下的存储目录,我们可以把文件 “寄存” 在他们的 Data 目录下。所以,还有一种解决方案是:
- 想办法唤出系统的 DocumentsUI。
- 把文件复制到这些 App 创建的快捷方式中。
至于 Anemo,它的文件不是存放在 Data 文件夹中的。
另外,DocumentsUI 好像也无法向 Data 目录写入文件。
1 个赞
又想到一个解决方案:
- 安装质感文件
- 安装 Fcitx 5
- 进入 质感文件侧边栏→添加存储空间→外部存储空间→选择目录 "小企鹅输入法5"添加后侧边栏中会多出一个名字为 “files” 的项目,他对应的就是刚刚添加的 Fcitx 5 的存储空间。
- 把图片文件的打开方式设置为 “质感文件”
- 把要隔离存放的文件,放到 “files” 中
质感文件应该不必过多介绍,其自带文本编辑器、图片查看器、压缩文件查看工具,而且支持挂载 FTP、SFTP、SMB、WebDAV。
2 个赞
tthy
(天天忽悠)
9
不是应用多开 是手机分身 安全空间 私密空间 这类功能
就是全部数据空间 包括存储空间都是加密 独一份的那种 彻底隔离
kimpvp
(kimpvp)
10
用这个APP可以解决毒瘤乱拉屎的问题,就是这个APP的数据会强制放到android/data
中,但有时还是会有侧漏。(注意:付费,需要ROOT)
直接用 termux 不香吗,通过支持 webdav 或 ftp 等服务的文件管理器(比如 mixplorer)管理私有文件
https://wiki.termux.com/wiki/Remote_Access
1 个赞
mfr
(MR)
13
感谢,最终选择了Fcitx5作为独立存储空间的方案,十分满意!
简单测试了一下
发现几个小问题
1.挂载存储空间的APP必须处在后台运行,否则质感文件就会报错无法访问
2.从公共目录复制到挂载空间内的文件,必须手动刷新才能看到
3.应用的私有文件,每次重启都会出现
在我这边的情况是:
- 我手机上的默认输入法是 Fcitx 5,它会一直在后台运行,因此质感文件随时可以访问其存储。但是 Android 系统似乎会阻止非系统应用关联启动,因此若 Fcitx 未在后台运行,质感文件无法访问其存储空间。而系统的 DocumentsUI 对存储空间有较高的控制权,即使 Fcitx 不在后台运行也可以访问。
- 这个的确是质感文件的问题。您可以用 DocumentsUI 来访问其存储空间。
- 这个我不太明白是什么意思,我这边复制到 Fcitx 存储文件夹中的文件,其他应用是看不到的。
DocumentsUI 的唤出方法您可以看本帖二楼:https://meta.appinn.net/t/topic/54771/2
就是你这个输入法,每次启动都会在自己的data目录下,创建自己的两个文件夹保存数据。
然后用solid访问这个私有目录,就能看见这两个不是我自主决定出现的文件夹。
洁癖犯了(划掉)
果然还是得 存储空间隔离(划掉)
这个存储空间就是 Fcitx 5 存放配置文件的目录,凭什么不让人家在里面生成配置文件
如果想要一个只属于用户的独立存储空间, Anemo 可能更适合。
当然,如果能 Root,“存储空间隔离”肯定是比较理想的答案。本帖讨论的,也无非是无法 Root 的情况下的缓兵之计。