new File(System.getenv("SECONDARY_STORAGE") + "/foo/", "bar.txt").createNewFile()
那行代码应该已经在 sd 卡的目录 foo 中创建了一个文件(已安装 sd 卡)。然而System.getenv("SECONDARY_STORAGE")
回报"/storage/sdcard1"
。它应该可以正常工作,只是首先应该创建文件的代码会抛出
android.system.ErrnoException: open failed: EACCES (Permission denied)
注:一个子类IOException
阅读使用System.getenv("SECONDARY_STORAGE")
工作正常,但是,所有的写作方式都会失败,但同样的例外。
这很容易通过使用来避免,"/sdcard/"
但该方法不可靠,因为并非所有制造商都会在 root 中放置 sdcard 快捷方式。
有没有办法可靠地解决这个问题?