存储访问框架 - 保存 Uri

Storage Access Framework - Saving Uri

我的应用程序需要以合适的形式存档文件夹 Uri(来自带有 ACTION_OPEN_DOCUMENT_TREE 的 Inten 和内部的正确标志,该文件夹已通过用户选择返回给应用程序)以便下次应用程序使用它运行 或设备已启动(使用了 takePersistableUriPermission)。

将Uri路径保存为字符串似乎还不够,因为

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

给出一个错误,比如无效的 Uri。

同时保存 Uri id 没有用。

我看到Uri里面有很多参数。我检查了哪些参数在我的示例 Uri 中有值,有几个是。

所以我会知道如何保存 Uri,以便应用程序拥有重新创建它所需的所有数据,并且 DocumentsContract class(或类似的)可以查询其参数而不抛出任何异常。

欢迎提出任何建议

存档 Uri 的正确方法是保存 uri.toString() 值。

然后检索它:uri=Uri.parse(archivedUriString);