Я пытаюсь реализовать SAF в своем приложении. Мне удалось скопировать музыкальные файлы на внешнюю SD-карту, используя следующее:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
который вызывает Средство выбора файлов / папок
копировать:
private String copyFile(String inputPath, String inputFile, Uri treeUri) {
InputStream in = null;
OutputStream out = null;
String error = null;
DocumentFile pickedDir = DocumentFile.fromTreeUri(getActivity(), treeUri);
String extension = inputFile.substring(inputFile.lastIndexOf(".")+1,inputFile.length());
try {
DocumentFile newFile = pickedDir.createFile("audio/"+extension, inputFile);
out = getActivity().getContentResolver().openOutputStream(newFile.getUri());
in = new FileInputStream(inputPath + inputFile);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
// write the output file (You have now copied the file)
out.flush();
out.close();
} catch (FileNotFoundException fnfe1) {
error = fnfe1.getMessage();
} catch (Exception e) {
error = e.getMessage();
}
return error;
}
НО, когда пользователь выбрал «переместить», я хочу удалить файлы в исходном месте (ах), которые могут не находиться в дереве документов, поскольку они не имеют ничего общего с выбранной папкой. Их пути берутся из поля Mediastore_DATA. Вопрос в том, как мне получить DocumentContract с этими файлами, чтобы я мог их удалить?
which brings up the File/folder Picker
. Нет. Тогда вы сможете только выбрать папку. Дерево. Нет файла. - person greenapps   schedule 29.03.2017Their paths are taken from the Mediastore_DATA field.
. Почему?. Вы только показали, как выбрать целевой каталог. Но вы не сказали, как пользователь выбрал музыкальные файлы, которые нужно было скопировать / переместить. Я думаю, тебе тоже стоит это сказать. - person greenapps   schedule 29.03.2017Why?
. Или дал дополнительную информацию, необходимую для решения вашей проблемы. - person greenapps   schedule 29.03.2017