2015-01-11 9 views
10

Mam dokładnie kopiowane następujący fragment kodu z wcześniejszym delegowania i działa na symulatorze, a także w moim urządzeniu Nexus 9, aż do punktu!ACTION otwarty dokument TREE zwraca tylko puste ostatnich folderowi

Jednak wszystkie uzyskać jest pusty Nowy folder, a ja nigdy nie dotrzeć do kodu, który zapisuje plik.

Co należy zmienić, aby uzyskać prawidłowe drzewo dokumentu?

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 dodałem problem tutaj: https://code.google.com/p/android/issues/detail?id=202116 –

Odpowiedz

0

Nie wiem, czy to jest to, co pytasz ale w próbniku folderu, gdzie widzisz tylko niedawne folderu, tam gdzie przelewowy menu można przełączać między pokaż/ukryj kartę SD.

Overflow menu

+0

próbowałem tego. Wciąż wyświetla tylko Ostatnie (na emulatorze) bez żadnych innych opcji. –

+0

Czy ustawiłeś rozmiar karty SD podczas tworzenia emulowanego urządzenia? –

2

miałem ten sam problem jak ty.

kliknąłem „Pokaż pamięci wewnętrznej” w menu przelewowym

enter image description here

Potem udało mi się zobaczyć „Pamięć wewnętrzna” w szufladzie

enter image description here

+0

Dzięki! Zastanawiam się, dlaczego pokazują one tylko pliki, które zostały pobrane lub są domyślnie .... –

0

Dla mnie jego działa na emulatorze, ale nie na prawdziwym telefonie z Androidem 5. Sprawdziłem nawet próbkę katalogu Google Android, a także nie działało.

Tak, na pewno jej to błąd, którego efekt można zobaczyć na niektórych telefonach.

Zgłoś ten błąd do google i czekać, aż zostanie rozwiązany. Do tego czasu możesz jedynie ograniczyć dostęp do karty pamięci w aplikacji, czego nie chcesz robić. Ale myślę, że nie ma nic, co moglibyśmy zrobić z naszej strony, zanim google to naprawi.

Jeśli któryś obejście tego można powiedzieć, ja też.

1

Inne wymienionych opcji na DocumentsUI które użytkownik powinien włączyć ręcznie. Istnieje jednak inna opcja. Dodaj te dodatki do swoich intencji: ACTION_OPEN_DOCUMENT, ACTION_GET_CONTENT, ACTION_CREATE_DOCUMENT lub ACTION_OPEN_DOCUMENT_TREE. Przycisk Przeglądaj w ustawieniach magazynu używa tych dodatków podczas otwierania aplikacji DocumentsUI. Myślę, że pierwszy wystarczy, by pokazać pamięć wewnętrzną i sdcard. Pozostałe są dobre.

intent.putExtra("android.content.extra.SHOW_ADVANCED", true); 
intent.putExtra("android.content.extra.FANCY", true); 
intent.putExtra("android.content.extra.SHOW_FILESIZE", true); 
Powiązane problemy