我只想列出某个文件夹的文件。我Intent.ACTION_OPEN_DOCUMENT_TREE
用来让用户选择文件夹。URI 保存在sharedPrefs
.
然后我试图通过使用从那个 URI 中获取孩子
val childrensUriUsingTree = DocumentsContract.buildChildDocumentsUriUsingTree(
uri,
DocumentsContract.getTreeDocumentId(uri)
)
问题是如果用户选择了子文件夹,则childrensUriUsingTree
返回的URIDocumentsContract
与给定的 URI 不匹配。Downloads
如果他像一切正常一样使用一级子文件夹。但是,如果用户选择了这样的子文件夹DCIM/MyFolder
,则会从 url 中删除,并且只有第一级子文件夹仍然存在。
例如 content://com.android.externalstorage.documents/tree/primary:DCIM/Camera 将被制作成 content://com.android.externalstorage.documents/tree/primary%3ADCIM/document/primary%3ADCIM/children所以相机部分只是被剥离了。
这会导致权限异常,因为Intent.ACTION_OPEN_DOCUMENT_TREE
没有授予对第一级子文件夹的访问权限。或者,如果存在权限,它将列出该第一级子文件夹中的文件。
这是一个错误还是我做错了什么?