代码之家  ›  专栏  ›  技术社区  ›  Retterdesdialogs

访问三星Galaxy S7 Micro SD卡的根目录

  •  1
  • Retterdesdialogs  · 技术社区  · 7 年前

    我无法访问三星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()
    

    但是有了这个路径,我无法访问sd卡上的文件。

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

    然后我试着在/存储器中的文件夹上循环/

        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 回复  |  直到 7 年前
        1
  •  1
  •   Retterdesdialogs    7 年前

    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卡。

    这很可悲。