操作OPEN DOCUMENT TREE只返回空的最近的文件夹

我已经仔细复制了以前的文章中的以下代码片段,它在模拟器上以及我的Nexus 9设备上都能正常工作!

不过,我得到的只是一个空的“最近”文件夹,我从来没有达到写入文件的代码。

我必须改变以获得适当的文档树?

private void testDocumentTree() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, 42); } public void onActivityResult(int requestCode, int resultCode, Intent resultData) { String TAG = "onActivityResult"; if (resultCode == RESULT_OK) { Uri treeUri = resultData.getData(); DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri); // List all existing files inside picked directory for (DocumentFile file : pickedDir.listFiles()) { Log.d(TAG, "Found file " + file.getName() + " with size " + file.length()); } // Create a new file and write into it DocumentFile newFile = pickedDir.createFile("text/plain", "My Novel"); try { OutputStream out = getContentResolver().openOutputStream(newFile.getUri()); out.write("A long time ago...".getBytes()); out.close(); } catch (FileNotFoundException e) { Log.d(TAG, "File Not Found, reason: ", e); } catch (IOException e) { Log.d(TAG,"IOException, reason: ", e); } } } 

Solutions Collecting From Web of "操作OPEN DOCUMENT TREE只返回空的最近的文件夹"

我有和你一样的问题。

我在溢出菜单中点击“显示内部存储”

在这里输入图像说明

之后,我可以看到抽屉里的“内部存储”

在这里输入图像说明

其他人提到了用户应手动启用的DocumentsUI选项。 不过还有另一种select。 将这些附加内容添加到您的ACTION_OPEN_DOCUMENT,ACTION_GET_CONTENT,ACTION_CREATE_DOCUMENT或ACTION_OPEN_DOCUMENT_TREE意图。 “存储”设置上的“浏览”button在打开DocumentsUI应用程序时使用这些附加function 我认为第一个足以显示内部存储和SD卡。 其他人都很好。

 intent.putExtra("android.content.extra.SHOW_ADVANCED", true); intent.putExtra("android.content.extra.FANCY", true); intent.putExtra("android.content.extra.SHOW_FILESIZE", true); 

不知道这是你问的,但在文件夹select器,你只看到最近的文件夹,有一个溢出菜单,您可以切换显示/隐藏SD卡。

溢出菜单

对我来说,它在模拟器上工作,但不是真正的Android 5手机。 我甚至检查谷歌Android目录select示例,它也没有工作。

所以,它肯定是一个在一些手机上可以看到效果的bug。

向谷歌报告这个错误并等待,直到它被修复。 直到那时你所能做的只是限制你的应用程序访问存储卡,这是你可能不想做的。 但是,我认为在谷歌修复它之前我们没有什么可以做的。

如果你有任何解决方法,你也可以告诉我。