Hallo,
mein neues "Spielzeug" ist mit Android 5 ausgeliefert worden. Also erst mal alles eingerichtet, funktionierte gut (ich konnte also wie immer in meiner App problemlos zwischen den Verzeichnissen, auch zwischen Internen Speicher und Externer SD wechseln....).
Als ich dann wieder WLan hatte ist das Update auf Android 6 gekommen. Danach kam die Abfrage wie ich die Externe SD Karte nutzen möchte. Ich habe mich entschieden diese weiter als "normale" SD Karte, also auch zum Austausch von Daten zwischen Geräten (oder wie sie es bezeichnet haben) zu nutzen.
Daraufhin hat die SD Karte den "kryptischen" Link /storage/4817-6E26 bekommen. Nach meinen Recherchen ist das bei Android 6 jetzt "normal".
Um weiterhin "sauber" auf die SD Karte und Internen Speicher zugreifen zu können gebe ich ab SDK 23 dem Nutzer jetzt noch Intern und SD-Card zur Auswahl.
Intern ist einfach über File.DirRootExternal zu ermitteln.
Für die SD Card nutze ich derzeit folgenden "Umweg":
(getExternalFilesDirs ist der bekannte Weg den man ab Android 4.4 gegangen ist um die zulässigen Pfade u ermitteln)
Die Ermittlung was nun gedrückt wurde (Lv_File_ItemClick...) ist dann auch etwas aufwändiger.
So, nun endlich zu den Fragen:
- gibt es einen einfacheren, sauberen Weg den Pfad (ROOT!) der SD Karte zu ermitteln?
- wie verhält sich das wenn man die SD Karte an das Gerät "bindet" (also Formatiert), ist der Pfad dann genau so oder anders?
Danke
mein neues "Spielzeug" ist mit Android 5 ausgeliefert worden. Also erst mal alles eingerichtet, funktionierte gut (ich konnte also wie immer in meiner App problemlos zwischen den Verzeichnissen, auch zwischen Internen Speicher und Externer SD wechseln....).
Als ich dann wieder WLan hatte ist das Update auf Android 6 gekommen. Danach kam die Abfrage wie ich die Externe SD Karte nutzen möchte. Ich habe mich entschieden diese weiter als "normale" SD Karte, also auch zum Austausch von Daten zwischen Geräten (oder wie sie es bezeichnet haben) zu nutzen.
Daraufhin hat die SD Karte den "kryptischen" Link /storage/4817-6E26 bekommen. Nach meinen Recherchen ist das bei Android 6 jetzt "normal".
Um weiterhin "sauber" auf die SD Karte und Internen Speicher zugreifen zu können gebe ich ab SDK 23 dem Nutzer jetzt noch Intern und SD-Card zur Auswahl.
Intern ist einfach über File.DirRootExternal zu ermitteln.
Für die SD Card nutze ich derzeit folgenden "Umweg":
B4X:
dim LV_File as ListView 'in Globals...
.....
If p.SdkVersion >=23 Then 'ab Android 6.0
LV_File.AddSingleLine2("INTERN",File.DirRootExternal)
Dim paths() As Object = GetContext.RunMethod("getExternalFilesDirs", Array(Null))
Dim varSplit() As String = Regex.Split("/", paths(paths.Length-1))
If varSplit.Length>=2 Then
LV_File.AddSingleLine2("SD-Card","/" & varSplit(1) & "/" & varSplit(2))
Else
LV_File.AddSingleLine2("SD-Card",paths(paths.Length-1))
End If
End If
......
(getExternalFilesDirs ist der bekannte Weg den man ab Android 4.4 gegangen ist um die zulässigen Pfade u ermitteln)
Die Ermittlung was nun gedrückt wurde (Lv_File_ItemClick...) ist dann auch etwas aufwändiger.
So, nun endlich zu den Fragen:
- gibt es einen einfacheren, sauberen Weg den Pfad (ROOT!) der SD Karte zu ermitteln?
- wie verhält sich das wenn man die SD Karte an das Gerät "bindet" (also Formatiert), ist der Pfad dann genau so oder anders?
Danke