如何将绝对路径字符串转换为树 Uri 格式的目录



如果我尝试解析"String path=/storage/emulated/0/Somefolder/"类型的字符串路径,该方法Uri.parse生成一个不是 AndroidUri 的Uri

。出于这个原因,如果我尝试DocumemtFile列表上类似的东西

String path="/storage/emulated/0/Somefolder/"
DocumentFiles[] fileslist=DocumentFile.fromTreeUri(this, Uri.parse(path)).listFiles();

我收到无效的 URI错误。

相反,如果我尝试使用DocumentFile.fromSingleUri也无法正常工作。

如何从字符串路径中正确获取Uri

我已经找到了如何使用操作意图获取treeuri,但我需要以编程方式执行此操作,而无需强迫用户手动选择文件夹。

如何从字符串路径中正确获取树 Uri?

那是不可能的,对不起。

为了使DocumentFile指向文件系统路径,请使用fromFile()。请记住:

  • 您需要android:requestLegacyExternalStorage="true"清单中的<application>元素才能对 Android 10+ 上的任意文件系统路径具有读取访问权限

  • 一旦您的targetSdkVersion达到 30,您将失去对 Android 11+ 上任意文件系统路径(尽管有该属性(的写入访问权限,明年某个时候

如果用户曾经用ACTION_OPEN_DOCUMENT_TREE选择了/storage/emulated/0,那么你自己可以很容易地为像/storage/emulated/0/myfolder/mysubfolder/myfile这样的路径构造 uri。并使用 uri 进行完全访问。

这与getRealPathFromUri()等功能有点相反。

请记住,这些功能被诅咒了!

最新更新