如何将绝对路径字符串转换为树 Uri 格式的目录
How to convert an absolute path String to a directory in tree Uri format
方法 Uri.parse
生成的 Uri 不是 Android tree Uri 如果我尝试解析 "String path=/storage/emulated/0/Somefolder/"
.
类型的字符串路径
出于这个原因,如果我尝试获取 DocumemtFile
类似
的列表
String path="/storage/emulated/0/Somefolder/"
DocumentFiles[] fileslist=DocumentFile.fromTreeUri(this, Uri.parse(path)).listFiles();
我收到 无效 URI 错误。
如果我尝试使用 DocumentFile.fromSingleUri
也无法正常工作。
如何从字符串路径中正确获取 tree Uri?
我已经找到如何使用 action Intent 获取 treeuri,但我需要以编程方式执行此操作,而不需要强制用户手动选择文件夹。
How Could I get the tree Uri correctly from a String path?
这是不可能的,抱歉。
为了使 DocumentFile
指向文件系统路径,请使用 fromFile()
。请记住:
您需要在清单中的 <application>
元素上使用 android:requestLegacyExternalStorage="true"
才能读取 Android 10+
上的任意文件系统路径
一旦你的 targetSdkVersion
达到 30,你将失去对 Android 11+ 上的任意文件系统路径(尽管有该属性)的写入权限,明年某个时候
如果用户曾经选择 /storage/emulated/0 和 ACTION_OPEN_DOCUMENT_TREE,那么您可以自己很容易地为 /storage/emulated/0/myfolder/mysubfolder/myfile
这样的路径构造 uri。并使用 uri 进行完全访问。
有点像getRealPathFromUri()
.
这样的函数的反转
请记住,这些函数是被诅咒的!
方法 Uri.parse
生成的 Uri 不是 Android tree Uri 如果我尝试解析 "String path=/storage/emulated/0/Somefolder/"
.
出于这个原因,如果我尝试获取 DocumemtFile
类似
String path="/storage/emulated/0/Somefolder/"
DocumentFiles[] fileslist=DocumentFile.fromTreeUri(this, Uri.parse(path)).listFiles();
我收到 无效 URI 错误。
如果我尝试使用 DocumentFile.fromSingleUri
也无法正常工作。
如何从字符串路径中正确获取 tree Uri?
我已经找到如何使用 action Intent 获取 treeuri,但我需要以编程方式执行此操作,而不需要强制用户手动选择文件夹。
How Could I get the tree Uri correctly from a String path?
这是不可能的,抱歉。
为了使 DocumentFile
指向文件系统路径,请使用 fromFile()
。请记住:
您需要在清单中的
上的任意文件系统路径<application>
元素上使用android:requestLegacyExternalStorage="true"
才能读取 Android 10+一旦你的
targetSdkVersion
达到 30,你将失去对 Android 11+ 上的任意文件系统路径(尽管有该属性)的写入权限,明年某个时候
如果用户曾经选择 /storage/emulated/0 和 ACTION_OPEN_DOCUMENT_TREE,那么您可以自己很容易地为 /storage/emulated/0/myfolder/mysubfolder/myfile
这样的路径构造 uri。并使用 uri 进行完全访问。
有点像getRealPathFromUri()
.
请记住,这些函数是被诅咒的!