«Ошибка открытия: EACCES (Отказано в доступе)» на Android

На Samsung T230 (Android 4.4.2) работает в следующих

File firstFile = new File("mnt/extSdCard/Android/data/com.example.storagetest", "test.txt");
RandomAccessFile fileLittle = new RandomAccessFile(firstFile, "rw");

File scndFile = new File("mnt/extSdCard/Android/data/com.example.storagetest", "test2.txt");
scndFile.createNewFile();

Я пробовал многие из этих устройств, которые работают таким образом. Пример T230

На планшете Hometech (Android 5.1.1) не работает.

File firstFile = new File("mnt/external_sd/Android/data/com.example.storagetest", "test.txt");
RandomAccessFile fileLittle = new RandomAccessFile(firstFile, "rw");

File scndFile = new File("mnt/external_sd/Android/data/com.example.storagetest", "test2.txt");
scndFile.createNewFile();

Я получаю следующее сообщение об ошибке:

открыть не удалось: EACCES (отказано в доступе)

Текущий AndroidManifest.xml

<application>
...
</application>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Я пробовал много разных способов... requestPermissions() и android:maxSdkVersion ничего не меняет Слишком много поиска, но я не смог прийти к выводу.

Как я могу создать файл на SD-карте.

Важно! Я могу читать файлы напрямую, но не могу изменить или создать новый файл.


person Abdullah    schedule 02.03.2016    source источник


Ответы (1)


Как я могу создать файл на SD-карте.

Вы не знаете. Устройства, поставляемые с Android 4.4+, не разрешают произвольный доступ к съемное хранилище.

Вы можете косвенно работать со съемными носителями через инфраструктуру доступа к хранилищу. Там вы не беспокоитесь о том, куда именно пользователь помещает данные (внешнее хранилище, съемное хранилище, Google Drive, Dropbox и т. д.).

person CommonsWare    schedule 02.03.2016
comment
Изменяет ли что-нибудь root-доступ? Я читаю блог, скоро подтвержу, - person Abdullah; 02.03.2016
comment
@Abdullah: Root-доступ должен позволять вам работать со съемными носителями. Также системным приложениям, по крайней мере, предустановленным, права на съемный носитель могут быть предоставлены производителем устройства (или, предположительно, разработчиком пользовательского ПЗУ). Обычные приложения SDK, однако, не могут. Если вас интересуют такого рода проблемы, вы можете прочитать сообщение в блоге Дэйва Смита в деталях того, как это реализовано. - person CommonsWare; 02.03.2016