如何在外部 SD 卡而不是设备存储中写入文件?

How to write a file in external sd card and not in device storage?

我试过这个:

  public String getFilename() {
    File file = new File(Environment.getExternalStorageDirectory(), "Test2");
    if (!file.exists()) {
        file.mkdirs();
    }
    String uriSting = (file.getAbsolutePath() + "/" + "IMG_" + System.currentTimeMillis() + ".png");
    return uriSting;
}

我尝试将第二行更改为:

File file = new File("sdcard/Test2");

但目录仍在设备存储中创建,而不是在外部 SD 卡上。

您无权任意访问 removable storage

在 Android 4.4+ 上,您有两个主要选择:

  1. 使用getExternalFilesDirs()getExternalCacheDirs()getExternalMediaDirs()(注意复数),所有方法都在Context上。如果它们 return 2+ 个位置,则第二个和后续位置是您的应用可以在没有任何权限的情况下读取和写入的可移动存储上的位置。

  2. 使用ACTION_OPEN_DOCUMENT and ACTION_CREATE_DOCUMENT, to allow the user to choose where to place some content, where the user can choose removable storage (or Google Drive, or DropBox, or external storage, or anything else). You wind up with a Uri, not a filesystem path; use ContentResolver to work with that Uri to get streams for reading and writing.