Записать файл на внешнюю карту SdCard в произвольных местах - PullRequest
0 голосов
/ 26 июня 2019

Я немного рассержен из-за всей путаницы с точкой монтирования externalStorage /sdcard и необходимыми мне различными разрешениями. Я имею в виду только внешнюю физическую карту sdCard , смонтированную в /storage/XXXX-XXXX/, а не "externalStorage", обычно монтируемую в /sdcard/.

Я уже прочитал много тем, включая это полное руководство (хотя оно может быть немного устаревшим). В нем четко говорится, что:

Дополнительные тома немного изменяют права на запись; они есть глобально читаемый под тем же разрешением, которое описано выше. Каталоги за пределами собственной управляемой области приложения (т.е. / Android / data / [PACKAGE_NAME]) вообще не доступны для записи применение.

Я хорошо осведомлен о том, как писать в "частный" каталог моих приложений в ie. /storage/5060-5A88/Android/data/my.apps.namespace/.

То, что я прочитал, это то, что не можно написать новый файл, скажем: /storage/5060-5A88/Pics4All.

Однако я скачал 2 «приложения File Explorer» (Google Files, CxFileExplorer) и проверил оттуда мою внешнюю SdCard. Как только я захотел что-то написать (например, папку или скопировать файл), эти приложения попросили меня подтвердить:

Предоставить AppName доступ к вашим данным, включая фотографии и видео, на Имя sdCard .

После предоставления я могу создавать папки, перемещать файлы и т. Д. Без необходимости взаимодействия с пользователем при выборе файлов или им подобных. Также есть специальная вкладка в Настройки-> Приложение-> Хранилище с надписью

«Внешнее хранилище» 1 ед. и кнопка «Очистить доступ» под ним.

Итак, мой вопрос: как эти приложения Explorer получили права на запись в произвольных местах на моей sdCard? Какой API они используют, я мог пропустить?

...