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

Android Studio中Environment.getExternalStorageDirectory废弃后如何在SD卡根目录创建文件

替代废弃的Environment.getExternalStorageDirectory()实现公共存储根目录创建文件/文件夹方案

Android 10(API 29)开始引入分区存储机制,Android 11(API 30)强制生效,Environment.getExternalStorageDirectory()被废弃后,可根据业务场景选择以下两种实现方案:

一、优先方案:使用系统公共目录(无需特殊权限,全版本兼容)

如果你的文件属于可公开访问的通用类型(比如下载文件、图片、文档等),优先选择该方案,不需要申请特殊权限,也符合官方权限规范:

  • 调用Environment.getExternalStoragePublicDirectory(String type)获取对应公共目录路径,常用type参数如下:
    • Environment.DIRECTORY_DOWNLOADS:对应系统Downloads下载目录
    • Environment.DIRECTORY_PICTURES:对应系统Pictures图库目录
    • Environment.DIRECTORY_DOCUMENTS:对应系统Documents文档目录
  • 在获取到的公共目录下创建自定义的文件/文件夹即可,示例代码如下:
// 示例:在Downloads目录下创建应用专属的自定义文件夹
File downloadDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File myAppDir = new File(downloadDir, "自定义文件夹名称");
if (!myAppDir.exists()) {
    // 创建文件夹
    boolean createResult = myAppDir.mkdirs();
}

注意:该方法虽然在API 29及以上也被标记为废弃,但官方明确说明该方法返回的路径依然合法可读写,仅不建议在公共目录存放应用私有数据,公共类文件可以正常使用

二、必须在公共存储根目录(和WhatsApp、Android、Downloads同级目录)创建内容的方案

如果业务确实需要直接在根目录创建内容,需要根据Android版本申请对应权限:

1. Android 9及以下(API ≤28)

  • 首先在AndroidManifest.xml中声明存储权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • 运行时动态申请以上两个权限,用户授权后即可直接操作根目录:
File rootDir = Environment.getExternalStorageDirectory();
File customRootFolder = new File(rootDir, "自定义根目录文件夹名称");
customRootFolder.mkdirs();

2. Android 10(API 29)

  • 在AndroidManifest.xml的application节点添加属性android:requestLegacyExternalStorage="true",申请使用旧版存储模型,后续操作和Android 9及以下一致即可。

3. Android 11及以上(API ≥30)

分区存储强制执行,需要申请所有文件访问权限:

  • 第一步:在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
  • 第二步:运行时引导用户跳转系统设置页授权:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    if (!Environment.isExternalStorageManager()) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
        startActivity(intent);
    }
}
  • 用户授权后即可正常在公共存储根目录创建文件/文件夹。
    注意:如果应用需要上架Google Play,需要向平台说明申请MANAGE_EXTERNAL_STORAGE权限的合理业务场景,不符合要求的应用会被驳回上架

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:54:03