Android 在SD卡上保存文件时出现权限错误

Android 在SD卡上保存文件时出现权限错误,android,permissions,android-sdcard,Android,Permissions,Android Sdcard,经过无数次的搜索,我终于找到了SD卡的路径,而不是android模拟存储。但当我尝试在那里创建.txt文件夹时,它最终会出错 /storage/37F0-1515/DCIM/100MEDIA/test.txt: open failed: EACCES (Permission denied) 我不知道为什么,因为我有权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <u

经过无数次的搜索,我终于找到了SD卡的路径,而不是android模拟存储。但当我尝试在那里创建.txt文件夹时,它最终会出错

/storage/37F0-1515/DCIM/100MEDIA/test.txt: open failed: EACCES (Permission denied)
我不知道为什么,因为我有权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
这是我正在使用的代码

    File sdCard = new File("/storage/37F0-1515/DCIM/100MEDIA");
    File dir = new File(sdCard.getAbsolutePath());


    if (!dir.exists()) {
        dir.mkdirs();
    }

    final File file = new File(dir, "test" + ".txt");
    try {
        BufferedWriter bufferedWriter = null;
        bufferedWriter = new BufferedWriter(new FileWriter(file));
        bufferedWriter.write("test");
        bufferedWriter.close();
    }
    catch(Exception e){Log.v("myApp", e.toString());}

我不知道为什么安卓不让我写SD卡。我需要其他权限吗?

尝试使用以下方法-

  • 检查
    使用权限
    语句是否位于正确位置,它们应位于
    下方和上方

    编辑-

    上述漏洞不适用于Android 5+。这个问题没有标准的解决方案。可能存在一些漏洞利用,但它们是特定于设备/不可靠/依赖于根访问的。 但是,可以使用存储访问框架之类的工具

    我不知道为什么,因为我有权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
    这些权限是为而不是为

    我不知道为什么安卓不让我写SD卡


    在Android 4.4+上,您没有对可移动存储的任意文件系统访问权限

    至少在Android 5.0中,此技术不起作用。此代码——一旦填充了缺失的部分——就会失败,因为缺少
    写入媒体存储
    权限。该权限是
    signature | privileged
    ,普通Android SDK应用程序无法持有该权限。因此,只有谷歌自己和手机制造商才能访问移动存储。。。伟大的无论如何,谢谢你的帮助。@Lowrider:不,唯一可以任意访问可移动存储的文件系统是谷歌自己和设备制造商的。欢迎您使用诸如
    getExternalFilesDirs()
    (注意复数形式)之类的方法来获取Android提供的可移动存储位置,您可以使用普通文件I/O来处理这些位置。或者,使用来允许用户选择存储东西的位置,使用
    Uri
    您可以返回到开放流进行读写。