Hallo Zusammen,
ich würde gerne Daten auf die extern SD-Karte schreiben. Auf die Karte, die ich physisch in das Tablet bzw Handy gesteckt habe. Nicht auf die interne emulierte Karte. Leider habe ich mit google noch kein zufriedenstellendes Ergebnis gefunden.
Über einen Explorer habe ich zum vergleichen die Namen der Verzeichnisse ermittelt.
Auf meinen Tablet, Android-Version 4.1.2 sind das:
/storage/sdcard0
/storage/extSdCard
/storage/UsbDriveA
bis
/storage/UsbDriveE
Auf meinen Handy, Android-Version 8.1.0 sind das:
/storage/emulate/0
/storage/sdcard
/storage/self
Die Funktion getExternalStorageDirectory() liefert mir bei beiden Geräten die interne emulierte SD-Karte, also /storage/sdcard0 und /storage/emulate/0. Die ich aber nicht haben möchte.
Mit der Funktion System.getenv("SECONDARY_STORAGE").toString() bekomme ich bei meinen Tablet den String "/storage/extSdCard:/storage/UsbDriveA:/storage/UsbDriveB:", der String geht bis UsbE. hier könnte ich den String zerlegen und so den Pfad für die externe SD-Karte erhalten. Bei meinem Handy liefert mir die Funktion allerdings einen leeren String.
Dann habe ich versucht, mir mit
File storage_dir = new File("/storage");
File[] files = storage_dir.listFiles();
for( File file : files){
Toast.makeText(this, file.getAbsolutePath(), Toast.LENGTH_LONG).show();
}
die Verzeichnisse in /storage anzeigen zu lassen. Auf meinem Tablet bekomme ich die oben aufgeführten Verzeichnisse alle einzeln angezeigt. Auf meinem Handy bekommen ich nur das Verzeichniss /storage/self angezeigt.
Mit den Funktionen des StorageManager getSystemService(STORAGE_SERVICE) und getStorageVolumes() bekomme ich auf meiem Handy alle Pfade zurückgegeben. Leider ist sind die Funktionen erst SdkVersion 24 und funktionieren nicht auf älteren Geräten, wie meinem Tablet.
Gibt es irgendeine Möglichkeit, wie man den Pfad zu der externen SD-Karte ermitteln kann, die sowohl auf älteren als auch auf neueren Geräten funktioniert ???