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

Android 8+三星手机外置SD卡无法创建文件夹写入文件求助

问题分析与解决方案

你遇到的核心问题是Android系统对外置SD卡的写入权限限制,普通的WRITE_EXTERNAL_STORAGE权限无法让你直接写入外置SD卡的根目录或非APP专属目录,尤其是Android 8.0+(API 26)及三星机型的权限管控更严格。

错误原因

从Android 4.4开始,第三方应用仅被允许写入外置SD卡的APP专属目录(路径格式:/storage/[SD卡ID]/Android/data/[你的应用包名]/files/),其他位置(比如SD卡根目录)需要通过**存储访问框架(SAF)**获取用户手动授权才能写入。你直接操作/storage/1234-5678/new_folder/属于未授权的非专属目录,所以mkdirs()会返回false。

解决方案

方案1:写入APP专属目录(无需额外授权)

这是最简便的方式,系统默认允许应用在自身专属目录读写,无需用户额外授权:

// 获取所有外部存储目录,第二个元素即为外置SD卡的专属目录
File[] externalFilesDirs = getExternalFilesDirs(null);
if (externalFilesDirs.length > 1 && externalFilesDirs[1] != null) {
    // 在专属目录下创建new_folder
    File directory = new File(externalFilesDirs[1], "new_folder");
    if (!directory.exists()) {
        boolean ok = directory.mkdirs();
        // 此时ok应返回true,创建成功
    }
}

方案2:通过SAF写入非专属目录(如SD卡根目录)

如果必须在SD卡根目录或其他非专属位置创建文件夹,需要使用存储访问框架让用户手动授权:

  1. 启动SAF目录选择界面:
private static final int REQUEST_CODE_SAF = 1001;

// 触发目录选择
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_SAF);
  1. 处理授权结果(AndroidX建议使用registerForActivityResult,以下为传统方式):
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_SAF && resultCode == RESULT_OK) {
        Uri treeUri = data.getData();
        // 申请持久化权限,避免重启应用后失效
        getContentResolver().takePersistableUriPermission(treeUri,
                Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        
        // 创建目标文件夹
        DocumentFile rootDir = DocumentFile.fromTreeUri(this, treeUri);
        DocumentFile newFolder = rootDir.createDirectory("new_folder");
        
        // 判断是否创建成功
        if (newFolder != null) {
            // 创建成功逻辑
        }
    }
}

额外注意事项

  • 三星部分机型可能对SD卡有额外的权限管控,确保用户在系统设置中开启了应用的存储权限。
  • 若SD卡开启了写保护,也会导致写入失败,可以尝试重新插拔SD卡或更换卡测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:26