# 求支持沙盒化存储的安卓文件管理&媒体播放器

**URL:** <https://meta.appinn.net/t/topic/54771>\
**Category:** 问题求助\
**Tags:** android\
**Created:** [2024 年4 月 4 日 13:36 UTC](https://meta.appinn.net/t/topic/54771 "2024-04-04T13:36:22Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

作者： ![mfr](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/m/48db29/32.png) [@mfr](https://meta.appinn.net/u/mfr)\
发布日期： [2024 年4 月 4 日 13:36 UTC](https://meta.appinn.net/t/topic/54771/1 "2024-04-04T13:36:22Z")

</div>

## 背景

相较于iOS的沙盒化文件管理模式，Android的文件管理一向以“方便/混乱”令人又爱又恨。考虑到.nomedia屏蔽媒体文件仅仅是程序与系统间的君子协定，而部分程序有意无意忽视上述屏蔽，造成媒体选取界面被大量无用视频/图片（如在微信图片选取界面中出现的电视剧/教程等）占据，给用户带来了困扰。  
如何最大程度减少手机中存储的大量媒体文件对其他程序的干扰，是十分有研究价值的问题。

Android10、11新增的分区存储特性，是解决程序随地大小便问题的勇敢尝试，自此 /Android/data/appname 文件夹成为了程序的专属领地。如果有一款文件管理器&媒体播放器能将媒体资源存储于自己的专属领地中，即可避免这些资源对其他应用的干扰。

## 需求功能

- 文件存储于/Android/data/appname 中
- 内置图片、音频、视频播放器，具有基础的媒体浏览能力
- 支持用外部浏览器打开及分享文件功能
- 支持在专属领地与公共存储空间之间批量移动文件
- 支持FTP服务器/SMB客户端/FTP客户端/SFTP客户端等功能，与第三方快速传输文件

- 注：需求有一点像在线视频客户端的离线缓存功能——无论客户端里缓存多少内容，都不会影响其他应用的媒体浏览体验。

谢谢各位大佬！

---

<div class="post-metadata">

作者： ![VictoryRoad](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/victoryroad/32/58964_2.png) [@VictoryRoad](https://meta.appinn.net/u/VictoryRoad)\
发布日期： [2024 年4 月 4 日 14:41 UTC](https://meta.appinn.net/t/topic/54771/2 "2024-04-04T14:41:09Z")

</div>

> [@mfr](#):
>
> 文件存储于/Android/data/appname 中

以目前的 Android 文件权限政策，应该是只有 Android 自带的 “文件” （`com.google.android.documentsui`）应用能做到。

但是，很多国产 ROM 把这个 App 给隐藏了。有如下几种唤出这个 App 的方法

方法1：安装 Activity Manager，

> **[Activity Manager | F-Droid - Free and Open Source Android App Repository](https://f-droid.org/packages/com.activitymanager/)**
>
> Advanced activities and shortcuts launcher

并在其中搜索 `com.google.android.documentsui`，找到 “文件” 应用，点击进去，找到其中的 FileActivity 活动，并为其创建快捷方式。

方法2：更换启动器为 Lawnchair该启动器的应用列表中包含了 “文件” 应用。

> **[„Lawnchair“ – IzzyOnDroid F-Droid Repository](https://apt.izzysoft.de/fdroid/index/apk/app.lawnchair)**
>
> Homescreen based on on Launcher3 from AOSP

方法3：可能是最接近您需求的 使用 “Anemo” 应用。这个应用很值得一提，它可以创建一个隔离空间（但好像只能创建一个隔离空间），然后您可以将自己的文件存储在这个空间中，不需要使用的时候可以卸载这个存储空间，这样任何应用都无法找到这个空间。

> **[Anemo | F-Droid - Free and Open Source Android App Repository](https://f-droid.org/packages/exe.bbllw8.anemo/)**
>
> A private local storage utility application for android.

这个应用启动后也可以唤起 Android 系统自带的文件应用。

* * *

> [@mfr](#):
>
> 内置图片、音频、视频播放器，具有基础的媒体浏览能力

- 图片可以用系统的图库打开，但好像无法翻页。
- 音频和视频可以用 Reex 或 MPV。
  - Reex 被酷安下架了，不知道作者还在哪里更新，这个地址可能是其他网友的搬运：[https://gitee.com/lntls/reex/releases](https://gitee.com/lntls/reex/releases)
  - MPV 可以在 F-Droid 下载：[https://f-droid.org/packages/is.xyz.mpv/](https://f-droid.org/packages/is.xyz.mpv/)

如果您还需要文本编辑器，可以试试这个应用：

> **[Editor | F-Droid - Free and Open Source Android App Repository](https://f-droid.org/packages/org.billthefarmer.editor/)**
>
> Simple generic text editor

> [@mfr](#):
>
> - 支持用外部浏览器打开及分享文件功能
> - 支持在专属领地与公共存储空间之间批量移动文件

`com.google.android.documentsui` 是 Android 系统级的文件管理应用，对存储空间具有完全控制权，您可以根据自己的需求把文件复制到任何地方。

您还可以使用这个应用，通过系统的 “分享” 菜单保存文件到指定位置：

> **[Save on Device | F-Droid - Free and Open Source Android App Repository](https://f-droid.org/packages/name.lmj001.savetodevice/)**
>
> Save shareable data to your device

> [@mfr](#):
>
> 支持FTP服务器/SMB客户端/FTP客户端/SFTP客户端等功能，与第三方快速传输文件

您可以试试这个应用，或许有用：

> **[CIFS Documents Provider | F-Droid - Free and Open Source Android App Repository](https://f-droid.org/packages/com.wa2c.android.cifsdocumentsprovider/)**
>
> Provides access to shared network storage.

> [@mfr](#):
>
> 注：需求有一点像在线视频客户端的离线缓存功能——无论客户端里缓存多少内容，都不会影响其他应用的媒体浏览体验。

这个，恕我才疏学浅，就不太清楚了。

---

<div class="post-metadata">

作者： ![VictoryRoad](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/victoryroad/32/58964_2.png) [@VictoryRoad](https://meta.appinn.net/u/VictoryRoad)\
发布日期： [2024 年4 月 4 日 14:50 UTC](https://meta.appinn.net/t/topic/54771/3 "2024-04-04T14:50:33Z")

</div>

二楼说的可能太乱了，我再开一楼简单概括一下：

- 创建隔离空间： [Anemo](https://f-droid.org/packages/exe.bbllw8.anemo/)
- 影音播放器：Reex 或 [MPV](https://f-droid.org/packages/is.xyz.mpv/)
- 文件复制和移动：系统自带的文件管理器本身就支持，也可以用 [Save 应用](https://f-droid.org/packages/name.lmj001.savetodevice/)，通过系统分享菜单发送文件
- 连接 SMB、FTP 等：[CIFS Documents Provider](https://f-droid.org/packages/com.wa2c.android.cifsdocumentsprovider/)

简而言之，楼主的需求可能没有单个 App 能做到，但可以通过 Anemo 实现与楼主需求类似的存储方式，再通过其他软件辅助，满足楼主的其他需求。

---

<div class="post-metadata">

作者： ![tthy](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tthy/32/72083_2.png) [@tthy](https://meta.appinn.net/u/tthy)\
发布日期： [2024 年4 月 4 日 16:22 UTC](https://meta.appinn.net/t/topic/54771/4 "2024-04-04T16:22:36Z")

</div>

直接用多用户功能 创建一个单独的空间?  
这个空间内 任意app能读取的文件相对原账户都是隔离的

---

<div class="post-metadata">

作者： ![mfr](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/m/48db29/32.png) [@mfr](https://meta.appinn.net/u/mfr)\
发布日期： [2024 年4 月 4 日 23:55 UTC](https://meta.appinn.net/t/topic/54771/5 "2024-04-04T23:55:59Z")

</div>

感谢大佬，学了很多，先去看下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文件夹，不影响其他应用的媒体选择界面，其他程序仍然干干净净
- 自己缓存的视频，自己可以播放
- 不支持外部打开及文件分享、文件移动、文件传输客户端，这是功能设计决定的

再次感谢大佬提供的方向！

---

<div class="post-metadata">

作者： ![mfr](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/m/48db29/32.png) [@mfr](https://meta.appinn.net/u/mfr)\
发布日期： [2024 年4 月 4 日 23:56 UTC](https://meta.appinn.net/t/topic/54771/6 "2024-04-04T23:56:07Z")

</div>

您说得很对，不过各家厂商对多用户功能的实现可能存在差异。  
如我此前使用的MIUI14应用双开功能便创建了多用户，但用户之间的媒体文件是共享的，可以在主用户的微信媒体选取界面中看到分身用户/storage/emulated/\*/中的文件；此前也使用过炼妖壶island，同样存在类似问题，且island会影响MIUI自带文件浏览器的功能，造成无法使用小米的文件互传服务。

---

<div class="post-metadata">

作者： ![VictoryRoad](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/victoryroad/32/58964_2.png) [@VictoryRoad](https://meta.appinn.net/u/VictoryRoad)\
发布日期： [2024 年4 月 5 日 00:05 UTC](https://meta.appinn.net/t/topic/54771/7 "2024-04-05T00:05:48Z")

</div>

其实 Fcitx 5 和 Termux 可以在系统原生的文件 App 中创建一个快捷方式，直接指向自己在 `/Android/data/` 下的存储目录，我们可以把文件 “寄存” 在他们的 Data 目录下。所以，还有一种解决方案是：

1. 想办法唤出系统的 DocumentsUI。
2. 把文件复制到这些 App 创建的快捷方式中。

至于 Anemo，它的文件不是存放在 Data 文件夹中的。

另外，DocumentsUI 好像也无法向 Data 目录写入文件。

---

<div class="post-metadata">

作者： ![VictoryRoad](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/victoryroad/32/58964_2.png) [@VictoryRoad](https://meta.appinn.net/u/VictoryRoad)\
发布日期： [2024 年4 月 5 日 01:09 UTC](https://meta.appinn.net/t/topic/54771/8 "2024-04-05T01:09:44Z")

</div>

又想到一个解决方案：

1. 安装[质感文件](https://f-droid.org/packages/me.zhanghai.android.files/)
2. 安装 [Fcitx 5](https://f-droid.org/packages/org.fcitx.fcitx5.android/)
3. 进入 质感文件侧边栏→添加存储空间→外部存储空间→选择目录 "小企鹅输入法5"添加后侧边栏中会多出一个名字为 “files” 的项目，他对应的就是刚刚添加的 Fcitx 5 的存储空间。
4. 把图片文件的打开方式设置为 “质感文件”
5. 把要隔离存放的文件，放到 “files” 中

质感文件应该不必过多介绍，其自带文本编辑器、图片查看器、压缩文件查看工具，而且支持挂载 FTP、SFTP、SMB、WebDAV。

---

<div class="post-metadata">

作者： ![tthy](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tthy/32/72083_2.png) [@tthy](https://meta.appinn.net/u/tthy)\
发布日期： [2024 年4 月 5 日 02:42 UTC](https://meta.appinn.net/t/topic/54771/9 "2024-04-05T02:42:31Z")

</div>

不是应用多开 是手机分身 安全空间 私密空间 这类功能  
就是全部数据空间 包括存储空间都是加密 独一份的那种 彻底隔离

---

<div class="post-metadata">

作者： ![kimpvp](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kimpvp/32/24252_2.png) [@kimpvp](https://meta.appinn.net/u/kimpvp)\
发布日期： [2024 年4 月 5 日 02:56 UTC](https://meta.appinn.net/t/topic/54771/10 "2024-04-05T02:56:55Z")

</div>

用这个APP可以解决毒瘤乱拉屎的问题，就是这个APP的数据会强制放到`android/data`中，但有时还是会有侧漏。（注意：付费，需要ROOT）

> **[存储空间隔离](https://sr.rikka.app/zh-hans/)**
>
> 优雅地解决“坏应用”滥用存储权限的问题

---

<div class="post-metadata">

作者： ![LambertCrofts](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/lambertcrofts/32/50237_2.png) [@LambertCrofts](https://meta.appinn.net/u/LambertCrofts)\
发布日期： [2024 年4 月 5 日 14:20 UTC](https://meta.appinn.net/t/topic/54771/11 "2024-04-05T14:20:55Z")

</div>

> [@mfr](#):
>
> 支持FTP服务器/SMB客户端/FTP客户端/SFTP客户端等功能，与第三方快速传输文件

直接用 termux 不香吗，通过支持 webdav 或 ftp 等服务的文件管理器（比如 [mixplorer](https://mixplorer.com/)）管理私有文件

[https://wiki.termux.com/wiki/Remote\_Access](https://wiki.termux.com/wiki/Remote_Access)

---

<div class="post-metadata">

作者： ![runze](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/runze/32/881_2.png) [@runze](https://meta.appinn.net/u/runze)\
发布日期： [2024 年4 月 5 日 16:53 UTC](https://meta.appinn.net/t/topic/54771/12 "2024-04-05T16:53:50Z")

</div>

存储空间隔离+1

相比辛苦去找符合要求的应用，不如直接改造出一个。

---

<div class="post-metadata">

作者： ![mfr](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/m/48db29/32.png) [@mfr](https://meta.appinn.net/u/mfr)\
发布日期： [2024 年4 月 8 日 13:56 UTC](https://meta.appinn.net/t/topic/54771/13 "2024-04-08T13:56:41Z")

</div>

感谢，最终选择了Fcitx5作为独立存储空间的方案，十分满意！

---

<div class="post-metadata">

作者： ![sertwen](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/sertwen/32/32399_2.png) [@sertwen](https://meta.appinn.net/u/sertwen)\
发布日期： [2024 年4 月 9 日 03:35 UTC](https://meta.appinn.net/t/topic/54771/14 "2024-04-09T03:35:55Z")

</div>

简单测试了一下  
发现几个小问题  
1.挂载存储空间的APP必须处在后台运行，否则质感文件就会报错无法访问  
2.从公共目录复制到挂载空间内的文件，必须手动刷新才能看到  
3.应用的私有文件，每次重启都会出现

---

<div class="post-metadata">

作者： ![VictoryRoad](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/victoryroad/32/58964_2.png) [@VictoryRoad](https://meta.appinn.net/u/VictoryRoad)\
发布日期： [2024 年4 月 9 日 04:05 UTC](https://meta.appinn.net/t/topic/54771/15 "2024-04-09T04:05:36Z")

</div>

在我这边的情况是：

1. 我手机上的默认输入法是 Fcitx 5，它会一直在后台运行，因此质感文件随时可以访问其存储。但是 Android 系统似乎会阻止非系统应用关联启动，因此若 Fcitx 未在后台运行，质感文件无法访问其存储空间。而系统的 DocumentsUI 对存储空间有较高的控制权，即使 Fcitx 不在后台运行也可以访问。
2. 这个的确是质感文件的问题。您可以用 DocumentsUI 来访问其存储空间。
3. 这个我不太明白是什么意思，我这边复制到 Fcitx 存储文件夹中的文件，其他应用是看不到的。

DocumentsUI 的唤出方法您可以看本帖二楼：[https://meta.appinn.net/t/topic/54771/2](https://meta.appinn.net/t/topic/54771/2)

---

<div class="post-metadata">

作者： ![sertwen](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/sertwen/32/32399_2.png) [@sertwen](https://meta.appinn.net/u/sertwen)\
发布日期： [2024 年4 月 9 日 14:52 UTC](https://meta.appinn.net/t/topic/54771/16 "2024-04-09T14:52:58Z")

</div>

就是你这个输入法，每次启动都会在自己的data目录下，创建自己的两个文件夹保存数据。  
然后用solid访问这个私有目录，就能看见这两个不是我自主决定出现的文件夹。

洁癖犯了（划掉）  
果然还是得 存储空间隔离（划掉）

---

<div class="post-metadata">

作者： ![VictoryRoad](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/victoryroad/32/58964_2.png) [@VictoryRoad](https://meta.appinn.net/u/VictoryRoad)\
发布日期： [2024 年4 月 9 日 15:44 UTC](https://meta.appinn.net/t/topic/54771/17 "2024-04-09T15:44:10Z")

</div>

> [@sertwen](#):
>
> 就是你这个输入法，每次启动都会在自己的data目录下，创建自己的两个文件夹保存数据。

这个存储空间就是 Fcitx 5 存放配置文件的目录，凭什么不让人家在里面生成配置文件 :doge:

如果想要一个只属于用户的独立存储空间， Anemo 可能更适合。

> **[Anemo | F-Droid - Free and Open Source Android App Repository](https://f-droid.org/packages/exe.bbllw8.anemo/)**
>
> A private local storage utility application for android.

当然，如果能 Root，“存储空间隔离”肯定是比较理想的答案。本帖讨论的，也无非是无法 Root 的情况下的缓兵之计。
