这个答案提供了一些关于使用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,我只能从我已授予权限的根目录中读取。
我是否缺少任何我需要做的事情来请求递归许可或其他任何简单方法来实现此目的?