[ERLEDIGT] Speicherort verschwindet nach Änderung des Standardpfads in der Systemeinstellung

E

enrem

Erfahrenes Mitglied
29
Hallo,

Wenn der Standardpfad von Android auf intern steht, liefert Environment.getExternalStorageDirectory()

„storage/emulated/0/“

Wenn der Standardpfad von Android auf SD-Karte steht, liefert

Environment.getExternalStorageDirectory()

„storage/BCC9-F7D9/“

Beim ersten handelt es sich um eine emulierte SD-Karte (interner Speicher). Beim zweiten um die echte SD-Karte.

Aufgrund des Verhaltens muss ich nun, nachdem der Anwender die Einstellung durchgeführt hat, mit den Daten umziehen.

Jetzt zu meiner Frage. Wie bekomme ich an das interne Laufwerk (die root) nachdem Android auf SD-Karte umgestellt wurde.
 

Anhänge

  • media-20170622.png
    media-20170622.png
    15,9 KB · Aufrufe: 188
Hallo enrem,

Die jeweiligen Pfad sind auf jedem Device unterschiedlich .
Du kannst also grundsätzlich nicht davon ausgehen , dass die zurückgelieferten Pfade stimmen.


Für korrekte Mounting-Points - schau Dir mal den StorageManager an
StorageManager | Android Developers
 
Zuletzt bearbeitet:
Habe nun folgendes probiert.

final StorageManager storageManager = (StorageManager) getSystemService(STORAGE_SERVICE);

Log.d(TAG, "getStorageVolume 0 "+storageManager.getStorageVolumes().get(0));
Log.d(TAG, "getStorageVolume 1 "+storageManager.getStorageVolumes().get(1));

das bekomme ich zurück:

getStorageVolume 0 StorageVolume: Interner Speicher
getStorageVolume 1 StorageVolume: SD-Karte (BCC9-F7D9)

Im internen Speicher gibt es einen Ordner "stundenbuch/database"

wie komme ich nun an meine datenbank heran?

Folgendes geht nicht:

String path = storageManager.getStorageVolumes().get(0)+"/stundenbuch/database";
File file = new File(path);
File list[] = file.listFiles();
if (list == null) {
return;
}

list ist immer null

Nochmal anders und konkret beschrieben:

Mit der Einstellung Standardpfad „intern“ liegen meine Daten unter:

„storage/emulated/0/stundenbuch/database“

Syntax

Environment.getExternalStorageDirectory()+“stundenbuch/database“

Mit der Einstellung Standardpfad „SD-Karte“ liegen meine Daten unter:

„storage/BCC9-F7D9/stundenbuch/database“

Selber Code

Environment.getExternalStorageDirectory()+“stundenbuch/database“

Ich muss nun jedoch an den Ordner

„interner Speicher/stundenbuch/database“

Denn dort liegen nach der Systemumstellung Standardpfad auf SD-Karte, die echten Daten.

String path = "storage/BCC9-F7D9/stundenbuch/database";

File file = new File(path);

File list[] = file.listFiles();

if (list == null) {

return;

}

In List sind hier 2 Einträge. Das geht also.

String path = "interner speicher/stundenbuch/database";

File file = new File(path);

File list[] = file.listFiles();

if (list == null) {

return;

}

In List sind hier 0 Einträge. Dort sind jedoch 12 Dateien. Das geht nicht. Wie komme ich an den internen Speicher.
[doublepost=1498153354,1498149358][/doublepost]Ich habs. Mensch bin ich blöd. Der interne Speicher auf dem sich meine Daten befinden heisst immer noch "storage/emulated/0". Ist mir nicht aufgefallen weil ich intern immer mit Environment.getExternalStorageDirectory() arbeite und die Rückgabe sich ja bekanntlich je nach Systemeinstellung ändert.

Jetzt habe ich einen Ansatz gefunden um mein Problem zu lösen. Danke...
 
Dann ist ja gut :)

Ich würde aber eher den Standard zum speichern der Daten nehmen
android/data/[PACKAGE] / [files]
 
Hätte ich machen sollen. Vor 3 Jahren habe ich daran nicht gedacht. Nun bin ich zu ängstlich das zu ändern. Danke für die Info...
 

Ähnliche Themen

M
Antworten
3
Aufrufe
169
moin
M
5
Antworten
22
Aufrufe
1.422
590239
5
S
Antworten
33
Aufrufe
2.674
Sempervivum
S
Zurück
Oben Unten