访问Samsungs Galaxy S7 Micro SD卡的根目录

时间:2017-08-09 09:16:48

标签: android android-sdcard galaxy

我在访问Samsung Galaxy S7上的SD卡时遇到问题。

我在清单中添加了权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我尝试访问SD卡的方法是获取绝对路径:

Environment.getExternalStorageDirectory().getAbsolutePath()

它显示了路径:/ storage / emulated / 0

但是通过这条路径,我无法访问SD卡上的文件。

我也尝试了不同的答案,包括“external_sd”,“sdcard”,使用“sdcard0”,“sdcard1”,但没有任何对我有用。

然后我尝试遍历/ storage /

中的文件夹
    File dir = new File("/storage/");

    ArrayList<String> fileNames = new ArrayList<String>();
    for (File f : dir.listFiles()) {
        if (f.isDirectory()){

            fileNames.add(f.getName());
        }
    }

    Log.d("file", fileNames.toString());

日志显示

[3333-3733, emulated, enc_emulated, self]

我发现,我要访问的文件位于文件夹3333-3733中。

那么访问SD卡的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

所以最后我使用了函数

public File getExternalSdCard() {
    File externalStorage = null;
    File storage = new File("/storage");

    if(storage.exists()) {
        File[] files = storage.listFiles();

        for (File file : files) {
            if (file.exists()) {
                try {
                    if (Environment.isExternalStorageRemovable(file)) {
                        externalStorage = file;
                        break;
                    }
                } catch (Exception e) {
                    Log.e("TAG", e.toString());
                }
            }
        }
    }

    return externalStorage;
}

拿到我的SD卡。

这太可悲了。