我想在我的应用程序中打开文件资源管理器,让用户选择一些路径并将其保存到我的数据库中。用户选择路径后,我想获取 Uri 并将其保存到数据库中。此 Uri 对于所有路径都必须是唯一的。 问题是用户可以通过两种方式选择一条路径,而我将为同一路径获得 2 个 Uri。
我使用 +21 作为最小 API。
我正在使用以下代码打开文件资源管理器。
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(Intent.createChooser(intent, "Choose directory"), 78);
这是我的下载文件夹的结果。 (我手机没有外存但是有外存路径)
我正在使用 uri.toString() 记录这个
content://com.android.externalstorage.documents/tree/primary%3A content://com.android.providers.downloads.documents/tree/downloads
对于第一个,我在文件资源管理器中打开抽屉导航并选择下载。 对于第二个,我在文件资源管理器中打开抽屉导航并选择我的内部存储,然后选择下载文件夹。
它们都是我存储中的同一个文件夹,但它有 2 个不同的路径。 我想为两者获得相同的路径。
最佳答案
那是不可能的。
用户可以安装任意数量的文档提供程序。这些可以使用任何 Uri
结构发布文档树,并且它们可以指向文档提供者想要的任何数据。如您所知,对于给定位置,给定用户可能有 1,000 个不同的 Uri
值。 ACTION_OPEN_DOCUMENT_TREE
可以返回它们中的任何一个,具体取决于用户在存储访问框架 UI 中选择的内容。您甚至没有可靠的方法来确定两个 Uri
值指向同一位置。
关于java - 如何从android中的文件资源管理器获取唯一路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921919/