Каркас доступа к хранилищу - сохранение Uri - PullRequest
0 голосов
/ 14 июня 2019

Мое приложение должно заархивировать папку Uri (из Inten с ACTION_OPEN_DOCUMENT_TREE и правильными флагами внутри, которая была возвращена приложению из выбора пользователя) в подходящей форме, чтобы использовать ее при следующем запуске приложения илиустройство загружено (используется takePersistableUriPermission).

Сохранение пути Uri в виде строки кажется недостаточным, поскольку

Uri uri;
uri=Uri.parse(uriPath);
docUri= DocumentsContract.buildDocumentUriUsingTree(uri,
            DocumentsContract.getTreeDocumentId(uri));

выдает ошибку, подобную недопустимому Uri.

Сохранение идентификатора Uri также бесполезно.

Я вижу, что Uri имеет много параметров внутри.Я проверил, какие параметры имеют значения в моем примере Uri, а некоторые из них:

Так что я бы знал, как сохранить Uri, чтобы в приложении были все необходимые данные для его воссоздания и класс DocumentsContract (или аналогичный)может запрашивать его параметры без каких-либо исключений.

Любое предложение приветствуется

1 Ответ

0 голосов
/ 19 июня 2019

Правильный способ архивировать Uri - это сохранить значение uri.toString().

Затем извлечь его: uri=Uri.parse(archivedUriString);

...