这个答案有一些关于使用ACTION_OPEN_DOCUMENT_TREE的好信息:

How to use the new SD card access API presented for Android 5.0 (Lollipop)?

在这个答案中是声明“是的,ACTION_OPEN_DOCUMENT_TREE意图使您可以递归访问现有的和新创建的文件和目录 . ”

我并不完全确定我正确地解释了这一点,因为这不是我在经验中发现的 . 当用户选择根目录时,我持有以下权限:

content://com.android.externalstorage.documents/tree/primary%3A

后来我想访问子路径:

content://com.android.externalstorage.documents/tree/primary%3APictures%2FScreenshots

然后我尝试访问DocumentFile,如下所示:

DocumentFile fromDir = DocumentFile.fromTreeUri(this, fromUri);
boolean canRead = fromDir.canRead();

我无法读取fromDir,我只能从我已授予权限的根目录中读取 .

有什么我缺少的,我需要做的是请求递归权限或任何其他简单的方法来实现这一点?