Создайте пустой файл внутри каталога с Uri - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь создать файл внутри каталога с помощью Uri. Для создания нового файла у меня нет Uri, но у меня есть каталог, внутри которого я хочу создать файл. Я следую этому руководству: https://developer.android.com/training/data-storage/shared/documents-files#grant -access-directory

Итак, теперь у меня есть постоянный доступ к (скажем) [Internal storage]/MyFilesCollection. У меня также есть Uri для доступа к нему. Я хочу создать файл внутри этого каталога, в основном (скажем) [Internal storage]/MyFilesCollection/myFile.txt

Я не хочу использовать Intent.ACTION_CREATE_DOCUMENT, поскольку он открывает системный сборщик для каждого файла, который я хочу создать. Также у меня есть постоянный доступ на запись в папку. Так есть ли способ создать файл без использования намерений?

Изменить: код, используемый для получения постоянного доступа:

val contentResolver = applicationContext.contentResolver
val takeFlags: Int = Intent.FLAG_GRANT_READ_URI_PERMISSION or
        Intent.FLAG_GRANT_WRITE_URI_PERMISSION
contentResolver.takePersistableUriPermission(uri, takeFlags)

Спасибо.

1 Ответ

1 голос
/ 02 августа 2020

Я собираюсь предположить, что вы используете ACTION_OPEN_DOCUMENT_TREE, чтобы получить Uri. Если это так:

Шаг № 1: Используйте DocumentFile.fromTreeUri(), чтобы получить DocumentFile, связанный с Uri, который вы получили от ACTION_OPEN_DOCUMENT_TREE

Шаг № 2: Позвоните createFile() на этом DocumentFile, чтобы получить DocumentFile, представляющий документ, который вы sh поместите в это дерево

Шаг # 3: Позвоните getUri() на этом новом DocumentFile чтобы получить Uri, представляющий документ

Шаг # 4: вызовите openOutputStream() на ContentResolver, передав этот Uri, чтобы получить OutputStream, который вы можете использовать для записи к документу

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