new File(System.getenv("SECONDARY_STORAGE") + "/foo/", "bar.txt").createNewFile()
Эта строка кода должна была создать файл в каталоге foo на SD-карте (SD-карта смонтирована).Однако System.getenv("SECONDARY_STORAGE")
возвращает "/storage/sdcard1"
.Это должно работать нормально, только то, что первый подобный код, который должен создать файл, выдает
android.system.ErrnoException: open failed: EACCES (Permission denied)
примечание: подкласс IOException
Чтение с использованием System.getenv("SECONDARY_STORAGE")
работает нормально, однаковсе средства записи потерпят неудачу с одним и тем же исключением.
Этого легко избежать, используя "/sdcard/"
, но этот метод ненадежен, поскольку не все производители помещают ярлык sdcard в корневой каталог.
Есть ли способ обойти это надежно?