我正在使用 Android 5.0(API 级别 21)中引入的Directory Selection API,让用户选择一个目录来保存文件。
要选择一个目录,我构建并发送一个 ACTION_OPEN_DOCUMENT_TREE 意图,如下面的代码所示:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
我得到以下弹出窗口:
但是,如果我让用户使用 ACTION_OPEN_DOCUMENT 意图选择文件:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, FILE_CHOOSER_ACTIVITY_REQUEST_CODE);
然后,我得到以下弹出窗口:
我正在我的 Android 5.0.1 Nexus Tab 10 中对其进行测试。为什么我使用 ACTION_OPEN_DOCUMENT_TREE 和 ACTION_OPEN_DOCUMENT 获得不同的根位置?也许只有 Internal Storage Document Provider 实例支持子树选择?
我还希望允许用户使用 ACTION_OPEN_DOCUMENT_TREE 选择 Google Drive 目录。
ACTION_OPEN_DOCUMENT_TREE 和 ACTION_OPEN_DOCUMENT 参考都说:
调用时,系统将显示安装在设备上的各种 DocumentsProvider 实例,让用户浏览它们。
非常感谢您提前