[ERLEDIGT] Wie kann ich feststellen ob eine SD-Karte migriert wurde

E

enrem

Erfahrenes Mitglied
29
Hallo,

Environment.getExternalStorageDirectory() für den shared-Speicher; zeigt entweder auf den Gerätespeicher (/storage/emulated/0 bei aktuellen Geräten) oder bei migrierten SD-Karten auf diese (/storage/<ID>/0)

Reicht dann die folgende Methode zum prüfen aus oder gibt es eine andere bessere Möglichkeit ohne "/storage/emulated/0".

public static Boolean isMigratedSDCard(){
// Ab Android 6 "Marshmallow" kann migriert werden
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
return ! Environment.getExternalStorageDirectory().getPath().equals("/storage/emulated/0");
}else{
return false;
}
}

vorab vielen Dank
 
Hallo enrem,

ich komme nochmal auf diesen Thread von gestern zurück
[ERLEDIGT] Speicherort verschwindet nach Änderung des Standardpfads in der Systemeinstellung

Wie schon dort erwähnt, wirst du um eine ordentlich ( selbst erstellte ) Klasse nicht drumrum kommen,
die die Infos mit dem StorageManager ermittelt.
Bsp : mit den envoirment Funktionen bekommst du bei einem S6 (Stock) z.b. nicht einmal den Internen Speicher

Das ist aufwendig , das weis ich und auch recht tricky - hat mich auch ein paar Tage Nerven gekostet
Wühle dich mal durch Stackoverflow.

Kleiner Hinweis :
File Fstab = new File("/system/etc/vold.fstab");
 
Hallo swa00,

mensch ist das heftig. Ich habe meine sqlite-Datenbank unter Environment.getExternalStorageDirectory().getPath()+"/stundenbuch/database" abgelegt. Da frage ich mich wo die auf dem s6 gelandet sind.

Wenn nicht migriert wurde und meine App gestartet ist, sollten diese dort unter "/storage/emulated/0/stundenbuch/database" zu finden sein. Wurde migriert legt meine App eine neue leere unter "/storage/<ID>/0/stundenbuch/database" an. Weil ja keine Datenbank anwensend ist.

Wenn ich das richtig verstanden habe, zumindest was ich so googeln konnte, sollte doch in jedem Fall ab Android 6 ein gemounteter Ordner "/storage/emulated/0" existieren. Das würde mir schon helfen.

Wenn ich da falsch liege, bitte noch eine kurze Rückmeldung, dann muss ich mir den StorageManager bei StackOverflow nocheimal anschauen.

Bei einer Neuentwicklung wäre das alles halb so wild. Bei derzeit 4000 aktiven Usern habe ich Angst was zu vermaseln. Zumal diese auch noch Abrechnungen damit machen. Ich schwitze nach jedem Update Blut und Wasser :blushing:

Vielen Dank swa00 ich glaube bei dir kommen hier jedemenfge Überstunden zusammen wenn ich sehe wie spät ich noch von dir geholfen bekomme.
 
Hallo enrem,

keine Ursache , dazu sind wir ja da und wenn man das Gefühl bekommt , dass da wirklich was umgesetzt werden soll und
man wirklich Hilfe benötigt, dann hilft man auch gerne :)

Vorschlag - oder besser ich frage mal :

Könntest du denn bei der neuen Version sicher sein , dass du die die DB der alten version findest ??
Wenn ja , schreib dir doch kurz ein "migrations" loop der daten von A nach B

P.S ich mach es im übrigen GANZ anders :
Da ich meistens free und premium habe , möchte ich vermeiden , dass man bei der Installation von der Premium die ganzen Einstellungen von
der Free wiederholen muss ( zwei pakete )

Ich gehe brutal hin und mache sowas
String APPNAME ="EnremsSuperTool";
String APPLICATION_PATH ;

if (!APPNAME.isEmpty() )
{
APPLICATION_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/enrems_company/" + APPNAME;
File DIR = new File(APPLICATION_PATH);
Boolean sucess = DIR.mkdirs();
}



File appDir = new File (APPLICATION_PATH);
SQLiteDatabase database = new SDBSQLiteHelperSettings(mContext,appDir.toString()+ "/app_settings.db").getWritableDatabase();
 
Zuletzt bearbeitet:
Mit dem StorageManager bekommt man die Volumes, darunter auch das Interne. Das hilft mir. Nun kann ich dem Anwender eine Möglichkeit anbieten, welchen Speicherort er wünscht. Entweder den internen oder den, der Environment.getExternalStorageDirectory().getAbsolutePath() anbietet. Ich nenne diesen "Standard Speicherort von Android". Denn der ändert sich ja bei einer migrierten Karte.

Sollte jemand sein Android migirerieren, hat er die Möglichkeit auf die alten Daten zuzugreifen indem er als Speicherort intern angibt.

Recht herzlichen Dank swa00, du hast mir sehr geholfen.
 
  • Danke
Reaktionen: swa00

Ähnliche Themen

D
Antworten
14
Aufrufe
1.700
chrs267
chrs267
L
Antworten
15
Aufrufe
905
jogimuc
J
M
Antworten
3
Aufrufe
146
moin
M
Zurück
Oben Unten