Android Studio erstellt kein Ordner... (SD)

  • Antworten:2
next user
  • Forum-Beiträge: 53

18.09.2017, 15:26:52 via Website

Hallo,

bevor Ihr etwas schreibt, ich habe sehr viel im Netzt und hier geschaut und vieles ausprobiert. Es hat nicht funktioniert, daher stelle ich die Frage.

Es geht darum, ich möchte einen Ordner auf der SD-Karte erstellen.
Ich habe lange gebraucht, um eine Möglichkeit zu finden, den Pfad der ECHTEN SD-Karte zu erhalten.
Bin dann auf folgende Lösung gestoßen:

public static String[] getStorageDirectories(Context pContext)

{
// Final set of paths
final Set rv = new HashSet<>();

//Get primary & secondary external device storage (internal storage & micro SDCARD slot...)
File[]  listExternalDirs = ContextCompat.getExternalFilesDirs(pContext, null);
for(int i=0;i<listExternalDirs.length;i++){
    if(listExternalDirs[i] != null) {
        String path = listExternalDirs[i].getAbsolutePath();
        int indexMountRoot = path.indexOf("/Android/data/");
        if(indexMountRoot >= 0 && indexMountRoot <= path.length()){
            //Get the root path for the external directory
            rv.add(path.substring(0, indexMountRoot));
        }
    }
}
return rv.toArray(new String[rv.size()]);

}

Ich habe Ihn von Stackoverflow übernommen und erhalte zwei Pfade (/storage/emulated/0 und /storage/7EFB...). Der zweite ist meine SD-Karte.
Jetzt habe ich versucht, einen Ordner auf der SD-Karte im "root" zu erstellen. Ich habe verschiedene Pfade ect. probiert, aber es wird kein Ordner erstellt. Das einzige mal, wo es geklappt hat,
war beim files-Ordner innerhalb meiner App (/storage/7EFB.../Android/data/com.meineapp.../files).
Im internen Speicher (/storage/emulated/0) konnte ich einen Ordner im "root" erstellen.
Auf der SD-Karte konnte ich den Ordner bisher nur im Files-Ordner innerhalb meines App-Ordners auf der SD erstellen.

  • Ich habe die Permission WRITE_EXTERNEL_STORAGE in der Manifest.
  • Ich habe die von Android Studio erstellte App auch aufgerufen, nachdem ich das Gerät vom PC getrennt habe, um die SD-Karte auch sicher "erreichbar" zu machen.
  • Ich habe, wie im Netzt hilfreich hingewiesen wurde, im Nachhinein unter Einstellungen -> Apps -> Meine App die Berechtigungen für den Speicher aktiviert.

Alles hat nichts geholfen.

Also noch mal kurz:
Ich kann im internen (emulated) Speicher den Ordner erstellen, auf der SD-Karte konnte ich ihn aber NUR im Files-Ordner meiner App (/storage/7EFB.../Android/data/com.meineapp.../files) erstellen, nirgendwo sonst.

Weiß einer da weiter?
Warum macht Android und die verschiedenen Versionen so viel "misst" mit dem Ansprechen des ECHTEN externen Speichers?
Wie machen es andere Apps?

Ich möchte doch einfach nur die SD-Karte ansprechen und einen Ordner erstellen können.
Ich würd ja zu Not auch den ordner innerhalb des Files-Ordners meiner App erstellen,
aber da kommen Daten rein, die nach unabhängig einer Deinstallation erhalten bleiben sollen.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.09.2017, 17:01:59 via Website

Hallo next user,
Herzlich wilkommen hier im Forum :)



Thema SD-Karte (Physisch):
Sehr schwierig. Seit 4.4 darf jede App nur noch in einen bestimmen Speicherbereich schreiben und dass ist dann unter /Android/data/packageName/files/...
Da daf dann auch nur die entsprechende App schreiben. Soll der sicherheit dienen.
Soweit ich weiß bleiben die Daten auch nach deinstallation erhalten, musst du mal testen.

Andere Apps erfordern root zugriff, damit kann die App dann auch diesen "schreibschutz" umgehen.

Auf der internen SN (Speicher) kannst du aber immer Ordner anlegen und Speichern etc.
Musst du es gerade auf der externen SD machen?

— geändert am 18.09.2017, 17:02:30

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
next user
  • Forum-Beiträge: 53

18.09.2017, 18:14:09 via Website

Pascal P.

Hallo next user,
Herzlich wilkommen hier im Forum :)



Thema SD-Karte (Physisch):
Sehr schwierig. Seit 4.4 darf jede App nur noch in einen bestimmen Speicherbereich schreiben und dass ist dann unter /Android/data/packageName/files/...
Da daf dann auch nur die entsprechende App schreiben. Soll der sicherheit dienen.

Ja, soweit habe ich es auch verstanden, allerdings schaffen es andere Apps wie z.B. Colornote ja problemlos ohne Root-Zugriff. Die App speichert bei mir im Ordner "/storage/sd-card/data" Backups.
Ich selber kann diesen ordner aber nicht beschreiben.

[[cite Pascal P.]]
Soweit ich weiß bleiben die Daten auch nach deinstallation erhalten, musst du mal testen.

Ich meine auf der Developer-Seite gelesen zu haben, das beide App-Verzeichnisse (intern und SD) bei einer Deinstallation gelöscht werden.
Hab grad nochmal einen Test gemacht und beide werden gelöscht.

[[cite Pascal P.]]
Auf der internen SN (Speicher) kannst du aber immer Ordner anlegen und Speichern etc.
Musst du es gerade auf der externen SD machen?

Wenn es öffentlich wäre, "muss" man es sicherlich nicht. Meine App ist aber speziel für mich und meinen Freundeskreis, wovon die meisten nicht gerade viel internen Speicher frei haben. Die App speichert unter anderem verschiedene Medien (Bilder, Videos, Musik ect...).
Ich finde es einfach schon krass, das ich nichtmal selber entscheiden darf, wofür ich meine gekaufte Speicherkarte nutzen möchte (ja, man kann in sein App-Verzeichniss speichern, aber nicht frei auf der SD und auch nicht dauerhaft (Deinstallation...)). Der Punkt Sicherheit wäre sicherlich auch damit bedient, das verschärfte Zugangsrechte beim Installieren einer App vom Benutzer genehmigt werden müssten...

Aber naja. Ist schon echt lässtig.

— geändert am 18.09.2017, 18:17:03

Antworten