如何访问给定内容 URI 的目录中的文件?

4 android android-intent

我的问题与这个问题非常相似。我使用 ACTION_OPEN_DOCUMENT_TREE 获得了目录的内容 Uri。得到了这样的东西

content://com.android.externalstorage.documents/tree/primary%3ASHAREit%2Fpictures
Run Code Online (Sandbox Code Playgroud)

选择目录时的结果。现在,我的问题是如何访问目录中的所有文件(最好也是子目录)。

Com*_*are 10

使用DocumentFile.fromTreeUri()创建一个DocumentFile为你的树。然后,使用listFiles()获取该树内的文档和子树的列表。对于那些isDirectory()return true,您可以进一步遍历树。对于其余部分,使用getUri()获取Uri文档的openInputStream()a ContentResolver,如果需要,您可以使用它来获取内容。

  • 你得到了很多答案,但你从不展示代码。能否请您显示详细代码。我没有Android Studio,但我直接使用java。我不知道如何从废品中拼凑出这个。 (2认同)

Ben*_*rth 5

我对 Android 开发非常陌生,并且很长一段时间都坚持理解 CommonsWare 的答案(以及其他资源)。该资源也很有帮助。

  1. 您需要DocumentFile AndroidX 库,因此将其添加到您的build.gradle:
implementation "androidx.documentfile:documentfile:1.0.1"
Run Code Online (Sandbox Code Playgroud)
  1. 获得包含 的内容 URI 后tree,您可以使用DocumentFile.fromTreeUri
implementation "androidx.documentfile:documentfile:1.0.1"
Run Code Online (Sandbox Code Playgroud)

现在我要弄清楚如何使用这个 DocumentFile...(提示val inputStream = contentResolver.openInputStream(childDocument.uri):)