如何从 android 中的文件资源管理器获取唯一路径
how to get unique path from file explorer in android
我想在我的应用程序中打开文件资源管理器,让用户 select 一些路径并将其保存到我的数据库中。在用户 selected 我想要获取 Uri 并将其保存到数据库的路径之后。此 Uri 对于所有路径都必须是唯一的。
问题是用户可以 select 一条路径和 2 种方式,我将获得同一路径的 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);
这是我的下载文件夹的结果。 (我的 phone 中没有外部存储,但它有外部存储的路径)
我正在使用 uri.toString()
记录这个
content://com.android.externalstorage.documents/tree/primary%3A
content://com.android.providers.downloads.documents/tree/downloads
对于第一个,我在文件资源管理器中打开导航抽屉并 select 下载。
对于第二个,我在文件资源管理器和 select 我的内部存储中打开导航抽屉,然后 select 下载文件夹。
它们都是我存储中的同一个文件夹,但它有 2 个不同的路径。
我想为两者获得相同的路径。
那是不可能的。
用户可以安装任意数量的文档提供程序。这些可以使用任何 Uri
结构发布文档树,并且它们可以指向文档提供者想要的任何数据。就您所知,对于给定位置,给定用户可能有 1,000 个不同的 Uri
值。 ACTION_OPEN_DOCUMENT_TREE
可以返回其中任何一个,具体取决于用户在存储访问框架 UI 中选择的内容。您甚至没有可靠的方法来确定两个 Uri
值指向同一位置。
我想在我的应用程序中打开文件资源管理器,让用户 select 一些路径并将其保存到我的数据库中。在用户 selected 我想要获取 Uri 并将其保存到数据库的路径之后。此 Uri 对于所有路径都必须是唯一的。 问题是用户可以 select 一条路径和 2 种方式,我将获得同一路径的 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);
这是我的下载文件夹的结果。 (我的 phone 中没有外部存储,但它有外部存储的路径)
我正在使用 uri.toString()
记录这个content://com.android.externalstorage.documents/tree/primary%3A content://com.android.providers.downloads.documents/tree/downloads
对于第一个,我在文件资源管理器中打开导航抽屉并 select 下载。 对于第二个,我在文件资源管理器和 select 我的内部存储中打开导航抽屉,然后 select 下载文件夹。
它们都是我存储中的同一个文件夹,但它有 2 个不同的路径。 我想为两者获得相同的路径。
那是不可能的。
用户可以安装任意数量的文档提供程序。这些可以使用任何 Uri
结构发布文档树,并且它们可以指向文档提供者想要的任何数据。就您所知,对于给定位置,给定用户可能有 1,000 个不同的 Uri
值。 ACTION_OPEN_DOCUMENT_TREE
可以返回其中任何一个,具体取决于用户在存储访问框架 UI 中选择的内容。您甚至没有可靠的方法来确定两个 Uri
值指向同一位置。