0

我只想列出某个文件夹的文件。我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没有授予对第一级子文件夹的访问权限。或者,如果存在权限,它将列出该第一级子文件夹中的文件。

这是一个错误还是我做错了什么?

4

0 回答 0