Используя программу эмуляции терминала termux ( https://termux.com ), я набираю следующую команду:
ls /sdcard
Я получаю следующую ошибку:
ls: can't open '/sdcard': Permission denied
Понимая, что каталог / sdcard на Android - это символическая ссылка, я попытался найти местоположение фактического каталога - узнав, что это не просто символическая ссылка, а символическая ссылка на другую символическую ссылку, а фактический каталог - / storage / emulated / 0
Итак, наконец, я напечатал:
ls -ld /storage/emulated/0
Результат, который я получил, был:
drwxrwx--x 63 root sdcard_r 4096 Aug 10 12:04 /storage/emulated/0
Итак, вкратце --- я не знаю, использовался ли termux для запуска с разрешениями группы sdcard_r или o- разрешения, используемые для разрешения чтения-записи, - но мне нужно знать, какой из двух он был раньше, и как все исправить - ведь возможность доступа к содержимому внутренней SD-карты очень важна.
Нет, мое устройство не имеет root-прав, и я не планирую его рутировать - поэтому я не могу предоставить какую-либо информацию, которую мне пришлось бы получить для рутирования устройства. Однако отсутствие рутования никогда не препятствовало мне иметь доступ на чтение к каталогу / sdcard - так что это ново (и тревожно).
Конечно, прошло уже несколько месяцев с тех пор, как я пытался это сделать ранее, но это новое ограничение для Android серьезно препятствует удобству использования termux и тому, кто знает, что еще, поскольку мне нужно иметь доступ к файлам, которые на моей SD-карте. (Я все еще могу многое, даже если не все, даже без разрешения на запись - но я почти застрял в воде, если не могу получить разрешения на чтение, как в настоящее время).
источник
READ_EXTERNAL_STORAGE
разрешение, поэтому он должен иметь доступ.Ответы:
После вики Termux , чтобы запустить
termux-setup-storage
установил ее для меня, как это было предложено fornwall .затем перезапустите Termux.
источник
Более новые версии Android требуют, чтобы приложения запрашивали разрешение во время выполнения. Возможно, вы уже заметили это. Одним из примеров является Chrome, запрашивающий разрешение на хранение при первой загрузке. Для Termux это проблема. Разрешения по умолчанию имеют значение «не разрешено», поэтому, когда Termux требуется разрешение для задачи, поскольку Termux не был обновлен для запроса этих разрешений, он все равно пытается выполнить задачу и в результате выдает ошибку. К сожалению, разработчики должны исправить это сами. К счастью, Android дает вам возможность управлять разрешениями приложений вручную. Пока разработчики не обновят Termux соответствующим образом, это, вероятно, единственный способ.
Шаг 1: Перейдите на страницу информации о приложении Termux.
Есть несколько способов добраться до этой страницы. Поскольку разные телефоны могут вести себя по-разному, я включил все, что знаю.
Способ 1: использование многозадачного меню
В списке приложений Termux должен быть первым. Нажмите и удерживайте его значок.
На некоторых телефонах вы уже будете на информационной странице. На других телефонах вы вместо этого увидите изменения в окне приложения Termux вверху, где где-то появится значок информации (ℹ). Другие телефоны могут предоставить вам контекстное меню с опцией «Информация о приложении». В обоих случаях нажмите на них.
Способ 2. Использование панели уведомлений
Попробуйте одно из следующих действий:
Способ 3: использование диспетчера приложений
Шаг 2: Изменение разрешений
Теперь вы должны попасть на страницу с именем, значком и номером версии Termux с двумя кнопками с надписью «Удалить» и «Принудительный останов». ниже должны быть различные другие варианты.
Тестирование изменений
Теперь вы предоставили Termux доступ к вашему хранилищу. Вы можете проверить это с помощью следующей команды:
ls /sdcard/
Если вы не получили ошибку об отказе в разрешении, это сработало! Вам не нужно делать это снова, пока вы не переустановите Termux.
источник
это июль 2017 года, и у меня была такая же проблема, гуглил и прибыл сюда. Комментарий Мэтью Рида указал путь к решению, но нет ответа, в котором это четко прописано, так что вот что из этого вышло:
Termux не запрашивает разрешение файловой системы при установке, поэтому вы должны включить его через Настройки => Приложения => Termux => Разрешения
источник