Ich verstehe, dass ExternalFiles für API 8 und höher verwendet werden soll und getExternalStorageDirectory für 7 und höher. Ich bin jedoch ein wenig verwirrt zwischen der Verwendung. Zum Beispiel wollte ich überprüfen, ob ein Ordner existiert und vorher würden Sie etwas verwenden wie:
File ChildFolder = new File(Environment.getExternalStorageDirectory() + "/ParentFolder/Child");
In jedem Beispiel heißt es jedoch, getExternalFilesDir (null), File.ext, zu verwenden. Da ich über API 8 bin, möchte ich diese Methode verwenden, aber wie suche ich einfach nach einem Ordner? Ich werde an einer anderen Stelle nach einer Datei suchen, möchte aber vorerst nur sehen, ob die Ordner vorhanden sind.
getExternalStorageDirectory()
sie nicht unbedingt - vielleicht auch nicht in die Regel - „Pfad zu Ihrer SD-Karte“ Rückkehr des Stattdessen wird das "primäre externe Speicherverzeichnis" zurückgegeben. Die Dokumente ( developer.android.com/reference/android/os/… ) sagen:Zunächst müssen wir verstehen, was der Unterschied zwischen internem Speicher, externem Speicher (auch als primärer externer Speicher bezeichnet) und sekundärem externem Speicher ist.
Interner Speicher: ist Speicher, auf den der Benutzer nur über installierte Apps (oder durch Rooten seines Geräts) zugreifen kann. Beispiel: data / data / app_packageName
Primärer externer Speicher: Eingebauter gemeinsamer Speicher, auf den der Benutzer zugreifen kann, indem er ein USB-Kabel einsteckt und es als Laufwerk auf einem Host-Computer anbringt. Beispiel: Wenn wir Nexus 5 32 GB sagen.
Sekundärer externer Speicher: Wechselspeicher. Beispiel: SD-Karte.
Es gibt den Pfad zum Dateiordner in Android / data / data / your_package / auf dem primären externen Speicher zurück. Welches ist eingebauter Speicher.
Es wird der Pfad des sekundären externen Speicherverzeichnisses zurückgegeben
quelle
File getExternalStoragePublicDirectory (String type)
undFile getFilesDir ()
auch! WICHTIGES UPDATE! für jeden, der auf diese Frage stößt.
Da dies eine etwas alte Frage ist, wollte ich nur einige zusätzliche Informationen liefern. Da Apps KitKat auch die haben WRITE_EXTERNAL_STORAGE Erlaubnis sind nur erlaubt , zu schreiben , um Android / data / data / your_package / auf externen Speicher, aka
getExternalFilesDir()
Wenn Sie versuchen, zu schreiben, erhalten
getExternalStorageDirectory() + "/somefolder/anotherfolder/"
Sie auf den meisten Geräten eine SecurityExceptionquelle
!! WICHTIG !!
Environment.getExternalStorageDirectory()
ist veraltet und stattdessen sollte Context # getExternalFilesDir (String), MediaStore oder Intent # ACTION_OPEN_DOCUMENT verwendet werden.https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory ()
Ebenfalls ab Android.M müssen Entwickler zur Laufzeit nach Berechtigungen fragen.
Weitere Details finden Sie in der Dokumentation hier und in dieser Frage
Environment.getExternalStorageDirectory () ist in Java der API-Ebene 29 veraltet
quelle