Android приложение показывает ошибку разрешений при записи на SD-карту USB - PullRequest
0 голосов
/ 10 июля 2020

У меня есть приложение, которое хранит / обрабатывает аудиофайлы. Аудиофайлы хранятся на другом устройстве, но я могу записать их в /storage/emulated/0/Music. Я хотел бы скопировать их на SD-карту, которая подключена к порту USB- c на note8 с моим приложением. Читал с sdcard целый день. Его путь к файлу - /storage/7256-F1FD. Однако при попытке записи на карту я получаю сообщение об отказе в доступе. Я могу использовать ADB, войти в оболочку и выполнить cp /storage/emulated/0/Music/file /storage/7256-F1FD/file, и он не копирует. Но с моим кодом Java это не работает. У меня есть разрешения для чтения и записи внешних. Я знаю, что они работают, поскольку мой код копирует в /storage/emulated/0/Music. Вот мой код для копирования:

String filefrom="/storage/emulated/0/Music/test.mp3";
String fileto="/storage/7256-F1FD/test.mp3";
try {
    java.nio.file.Files.move(Paths.get(filefrom), Paths.get(fileto), StandardCopyOption.REPLACE_EXISTING);
} catch (Exception e) {
    Log.d("log", "error");
}

Я получаю ошибку отказа в доступе.

Я также пробовал следующее, поскольку cp работал:

Runtime.getRuntime().exec("cp /storage/emulated/0/Music/test.mp3 /storage/7256-F1FD/test.mp3\n");

Файл не отображается и ошибка не записывается.

Как я могу скопировать файл из /storage/emulated/0/Music в /storage/7256-F1FD из моего приложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...