2014-11-27 28 views
5

To jest mój kodDlaczego nie mogę utworzyć katalogu wewnątrz Environment.DIRECTORY_PICTURES?

File selfieLocation = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), 
       "Daily Selfies"); 
boolean isDirectory = false; 
if(!selfieLocation.isDirectory()) { 
     //Creates directory named by this file 
     selfieLocation.mkdir(); 
     isDirectory = selfieLocation.isDirectory(); 
} 
//array of strings 
for(String selfiePath: selfieLocation.list()) { 
     selfies.add(selfiePath); 
} 

Zasadniczo co próbuję zrobić, to stworzyć własny katalog konfigurowalny wewnątrz standardowego katalogu, w których można umieścić zdjęcia, które są dostępne dla użytkownika.

Spojrzałem na powiązane wątki i zobaczyłem ten, Android: unable to create a directory in default pictures folder. Jednak upewniłem się, że mam wywołanie getExternal ...., a nie tylko Environment.DIRECTORY_PICTURES jako parametr. Sprawdziłem również tutaj http://developer.android.com/guide/topics/data/data-storage.html#filesExternal i zobaczyłem, że miałem odpowiednie wywołanie metody/format, aby stworzyć konfigurowalny folder w pamięci zewnętrznej. Przykład docs był

File file = new File(Environment.getExternalStoragePublicDirectory(
     Environment.DIRECTORY_PICTURES), albumName); 
if (!file.mkdirs()) { 
    Log.e(LOG_TAG, "Directory not created"); 
} 

Wszedłem przez mojego kodu i zobaczył, że lokalna zmienna isDirectory zatrzymaliśmy się fałszywy, nawet po wywołaniu selfieLocation.mkdir(). Czy ktoś wie, dlaczego nie można utworzyć tego katalogu?

Odpowiedz

4

Spróbuj utworzyć katalog z File#mkdirs(), a nie File#mkdir(). Ten ostatni zakłada, że ​​wszystkie katalogi nadrzędne są już zainstalowane, więc nie utworzy katalogu, jeśli któryś z jego rodziców nie istnieje.
Zobacz także swoje uprawnienia w AndroidManifest.xml. Potrzebne są następujące uprawnienia w celu odczytu/zapisu treści na zewnętrznej pamięci masowej:

<manifest ...> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    ... 
</manifest> 

android.permission.READ_EXTERNAL_STORAGE nie jest wymagany do teraz, ale it will be w przyszłych wydaniach Androida.

+0

Pozwolenie nie jest problemem, ponieważ mam to i nie otrzymałem wyjątku bezpieczeństwa. mkdirs też nie działa. Rodzic istnieje w tym przypadku (getExternalFilesDir (Environment.DIRECTORY_PICTURES) – committedandroider

+0

Przy okazji, czy możesz zadać to pytanie, jeśli uważasz, że jest to dobre pytanie? Jestem w niebezpieczeństwie zakwestionowania pytań, więc staram się upewnić, że Zadaję teraz dobre pytania z badaniami – committedandroider

+0

Próbowałem odtworzyć twój błąd i wszystko działa dobrze na emulatorze Problem musi być gdzieś indziej Dam przypomnienie, gdy widzę pytanie, które może być interesujące To dobre pytanie, z wysiłkiem badawczym, ale nie jest to interesujące z mojego punktu widzenia – aga

Powiązane problemy