2015-01-11 26 views
10

我已經仔細複製了以前的文章中的以下代碼片段,它在模擬器和我的Nexus 9設備上都能正常工作!操作OPEN DOCUMENT TREE只返回空文件夾最近的文件夾

但是,我得到的只是一個空的Recent文件夾,我從來沒有達到寫入文件的代碼。

我必須改變以獲取適當的文檔樹嗎?

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); 
       } 
      } 
     } 
+0

FWIW,我在這裏補充一個問題:https://code.google.com/p/android/issues/detail?id=202116 –

回答

0

不知道這是否是你問什麼,但在文件夾選擇器,在這裏你看到的只是最近的文件夾中,有一個溢出菜單,您可以顯示/隱藏SD卡之間進行切換。

Overflow menu

+0

嘗試這個。仍然只顯示最近(在模擬器上)沒有其他選項。 –

+0

您是否在創建仿真設備時設置了SD卡的大小? –

2

我有同樣的問題,因爲你做的。

我在溢出菜單中點擊「查看內部存儲」

enter image description here

之後,我能看到「內部存儲」在抽屜裏

enter image description here

+0

謝謝!我想知道爲什麼他們只顯示下載的文件或默認情況下的圖片.... –

0

對我來說,它的在模擬器上工作,但不在真正的Android 5手機上工作。 我甚至檢查谷歌Android目錄選擇示例,它也沒有工作。

因此,它肯定是一個在某些手機上可以看到效果的bug。

向谷歌報告此錯誤並等待它被修復。直到那時你所能做的只是限制你的應用程序訪問存儲卡,這是你不想做的。但我認爲在谷歌修復它之前,我們無能爲力。

如果您對此有任何解決方法,您也可以告訴我。

1

其他人提到了用戶應手動啓用的DocumentsUI選項。不過還有另一種選擇。將這些附加內容添加到您的ACTION_OPEN_DOCUMENT,ACTION_GET_CONTENT,ACTION_CREATE_DOCUMENT或ACTION_OPEN_DOCUMENT_TREE意圖。 「存儲」設置上的「探索」按鈕在打開DocumentsUI應用程序時使用這些附加功能我認爲第一個足以顯示內部存儲和SD卡。其他人都很好。

intent.putExtra("android.content.extra.SHOW_ADVANCED", true); 
intent.putExtra("android.content.extra.FANCY", true); 
intent.putExtra("android.content.extra.SHOW_FILESIZE", true); 
相關問題