Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
arzrav
73 / 74 / 4
Регистрация: 25.09.2012
Сообщений: 212
1

Как создать директорию, используя полученный URI?

12.08.2017, 19:22. Просмотров 410. Ответов 0

С помощью нового интента пользователь выбирает место, где приложение будет хранить файлы:
Java
1
2
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_PATH_TO_DATA);
Затем приложение получает выбранную директорию через data и создает там папку "Portfolio":
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != Activity.RESULT_OK) {
        return;
    }
 
    if (requestCode == REQUEST_CODE_PATH_TO_DATA) {
        if (data == null) {
            return;
        }
 
        DocumentFile pickedDir = DocumentFile.fromTreeUri(getActivity(), data.getData());
        getActivity().grantUriPermission(getActivity().getPackageName(), data.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        getActivity().getContentResolver().takePersistableUriPermission(data.getData(), Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        pickedDir.createDirectory("Portfolio");
        String pathToPickedDir = "";
        for (DocumentFile file : pickedDir.listFiles()) {
            if (file.isDirectory() && file.getName().endsWith("Portfolio")) {
                pathToPickedDir = file.getUri().toString();
            }
        }
    }
}
Однако, когда я пытаюсь получить URI папки "Portfolio" и создать в ней еще одну папку, то ничего не выходит и новая папка создается на том же уровне, что и "Portfolio", а не в ней.
Java
1
2
DocumentFile pickedDir = DocumentFile.fromTreeUri(getActivity(), pathToPickedDir);
pickedDir.createDirectory("Patient");
Вот URI из data.getData(), когда пользователь выбирает директорию в новом интенте:
Java
1
content://com.android.externalstorage.documents/tree/314E-7741%3ADCIM
А вот URI из file.getUri(), путь к папке "Portfolio":
Java
1
content://com.android.externalstorage.documents/tree/314E-7741%3ADCIM/document/314E-7741%3ADCIM%2FPortfolio
Подскажите, что я делаю не так? Заранее благодарю.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2017, 19:22
Ответы с готовыми решениями:

Как правильно создать файл из Uri или Uri.getPath() для отправки на сервер?
Есть Uri, полученный после выбора файлов в галерее. Uri вроде правильный:...

Как скрыть директорию в url используя htaccess
Здравствуйте, дорогие форумчане! Не получается скрыть директорию в url с помощью htaccess. ...

Как создать директорию?
А как создать директорию? Заранее благодарен...

Как создать директорию?
Достала вся эта путаница со строками, когда пишешь то ли на С или С++ или С#, я вообще без...

Как создать запрос полученный от Ajax
Добрый день. Если кто сталкивался с запросами Ajax к классу php. Увидел подобную реализацию в...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2017, 19:22

Как перед сохранением выбрать, создать директорию?
<?php if(get_magic_quotes_gpc()) $_POST = array_map('stripslashes', $_POST); if($_POST){...

Скрипт не распознаёт директорию как директорию
Здравствуйте уважаемые! Ещё одна проблемка вдогонку к предыдущему посту: Есть ajax.pl — Общается...

При попытке создать директорию ошибка: Невозможно создать файл т.к. он уже существует
Здравствуйте. Использую такой вот код: int WriteLog( ) { ofstream myfile; LPCTSTR path...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru