Android Studio - 在外部存储中创建了一个目录,但在 SD 卡中看不到

问题描述 投票:0回答:1

我正在尝试使用以下代码在 SD 卡下创建一个目录:

file = new File(Environment.getExternalStorageDirectory(), "foldername");
            if(!file.exists()){
                file.mkdirs();
                System.out.println("Directory created: " + file.getPath());
            }

但这最终会在创建的目录下创建一个文件夹:/storage/emulated/0/foldername 这最终不会保存在 SD 卡上的任何位置。有谁知道如何在SDCARD中成功创建目录吗?

SDCARD image

java android android-studio intellij-idea android-external-storage
1个回答
0
投票

这里是一个获取 Android 10+ 的“已安装”SD 卡的对象。卡一是SIM卡,卡二是micro SD卡。当您使用Environment.getExternalStorageDirectory()时,它会为您提供第一个插槽中的SIM卡,该卡是只读的,因此您无法对其进行写入。这是一个读取已安装 SD 卡的对象:

package com.example.audioplayer;

import android.content.Context;
import android.os.Environment;
import android.os.Parcel;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;

import java.util.ArrayList;
import java.util.List;

public class MountedVolumes {
    public ArrayList<String> mMountedVolumes = new ArrayList<>();

    public MountedVolumes(Context context) {
        StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);

        if (storageManager == null) {
            return;
        }

        List<StorageVolume> storageVolumes = storageManager.getStorageVolumes();

        for (StorageVolume storageVolume : storageVolumes) {
            if (storageVolume.getState().equals(Environment.MEDIA_MOUNTED)) {
                Parcel p = Parcel.obtain();
                storageVolume.writeToParcel(p, 0);
                p.setDataPosition(0);
                p.readString();
                String path = p.readString();
                p.recycle();

                mMountedVolumes.add(path);
            }
        }
    }

    public String GetVolume(int i) {
        if (mMountedVolumes.isEmpty()) {
            return null;
        }

        if (i >= mMountedVolumes.size()) {
            return null;
        }

        return mMountedVolumes.get(i);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.