Android 对 SD 卡的写入权限

Android write access to SD card

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

根据Android:

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

所以这行不通:

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) 
}

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

中有权限

Environment.getExternalStorageDirectory() 将无法工作,因为我正在尝试写入可移动 SD 卡而不是 phone 内存。

那么,如果应用应该被禁止写入二级存储,那么像File Manager这样的应用如何写入SD卡?

So this wont work:

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

I have the permission in AndroidManifest.xml

那是为了 external storage, not removable storage

how can apps like File Manager write to sd cards?

他们依靠用户通过 the Storage Access Framework 来帮助他们。