You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12 AOSP:如何阻止外部存储自动创建媒体文件夹?

禁用Android 12 AOSP外部存储自动创建媒体文件夹的方案

方法一:修改ExternalStorageProvider的目录创建逻辑

  • 定位AOSP源码路径:frameworks/base/packages/MediaProvider/src/com/android/providers/media/external/ExternalStorageProvider.java
  • 找到负责创建默认媒体目录的方法(通常为ensureDefaultDirectories()或createDefaultDirectoriesForVolume()),该方法会遍历预定义的媒体类型,在外部存储根目录生成对应文件夹。
  • 添加判断逻辑,跳过可移除存储(U盘)的目录创建:
    // 修改遍历存储卷的逻辑示例
    for (String volumeId : getVolumeIds()) {
        VolumeInfo vol = getVolume(volumeId);
        // 若为可移除存储,跳过创建流程
        if (vol != null && vol.isRemovable()) {
            continue;
        }
        createDefaultDirectoriesForVolume(vol);
    }
    
  • 注释或删除原有的无条件目录创建代码,重新编译MediaProvider模块并刷入设备。

方法二:移除媒体目录预定义列表

  • 定位到媒体目录常量定义文件:frameworks/base/core/java/android/os/Environment.java
  • 找到DIRECTORY_MUSIC、DIRECTORY_MOVIES、DIRECTORY_PODCASTS等常量,或对应的资源文件(如res/values/strings.xml中的媒体目录数组)。
  • 清空或删除不需要的目录类型定义,彻底移除自动创建的源头。注意:此操作会影响所有依赖这些目录的媒体相关功能,适合完全不需要媒体管理的设备。

方法三:添加系统属性控制开关

  • 在ExternalStorageProvider的目录创建方法中加入系统属性判断:
    // 仅当属性为true时才执行创建逻辑
    if (SystemProperties.getBoolean("persist.sys.media.autocreate", true)) {
        // 原目录创建代码
    }
    
  • 重新编译MediaProvider后,在设备的build.prop中添加配置:
    persist.sys.media.autocreate=false
    

补充说明

.nomedia文件仅用于让媒体扫描器忽略目录内的文件,无法阻止系统创建默认媒体目录,因此之前的尝试无效属于正常情况。修改后需重新编译对应模块或完整系统镜像,刷入设备验证效果。

内容的提问来源于stack exchange,提问作者Alex68

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:11:00