Android 对 SD 卡的写访问

miX*_*iXo 2 java android android-external-storage

我正在尝试写入外部辅助存储(sd 卡),但看起来我没有权限。

根据安卓:

辅助外部存储不得由应用程序写入,除非在合成权限允许的特定于包的目录中。

所以这行不通:

try {
    String sdCard = System.getenv("SECONDARY_STORAGE");
    FileWriter writer = new FileWriter(new File(sdCard, "test.txt"));
    writer.write("a test");
    writer.flush();
    writer.close();
} catch (IOException e) {
    Log.d(e.toString());
    //java.io.FileNotFoundException: /storage/extSdCard/test.txt: open failed: EACCES (Permission denied) 
}
Run Code Online (Sandbox Code Playgroud)

我在 AndroidManifest.xml 中有权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

并且Environment.getExternalStorageDirectory()无法工作,因为我试图写入可移动 SD 卡而不是手机内存。

那么,如果应用程序应该被禁止写入二级存储,那么文件管理器之类的应用程序如何写入 SD 卡呢?

Com*_*are 5

所以这行不通:

除其他原因外,我不知道设备需要具有SECONDARY_STORAGE环境变量。

我在 AndroidManifest.xml 中有权限

那是用于外部存储,而不是可移动存储

文件管理器之类的应用程序如何写入 SD 卡?

他们依靠用户通过存储访问框架来帮助他们。