Dateien vom Internen in den Externen Speicher kopieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Dateien vom Internen in den Externen Speicher kopieren

    Hallo!
    Ich bin neu hier im Forum und habe gleich eine Frage. Ich möchte Dateien vom Internen in den Externen Speicher (SD-Card) mittels APP kopieren und bekomme immer den Fehler "Access denied" mit Delphi Entwicklung oder "Datei nicht gefunden" mit Android Studio.
    ASUS Tablet mit Android-Version 6.0.1.
    Ich spreche die Dateien mit folgenden Pfaden an: Im Internen Speicher auf "/sdcard/DCIM/Test/INT_datei.txt" und im externen Speicher (SD-Card) auf "/storage/3636-6430/Test/EXT_datei.txt"
    Kann mir bitte jemand weiterhelfen, ich probiere schon einige Tagen, aber es funkt nicht.
    Danke und LG
    Manfred
  • Hallo!
    Danke für die rasche Antwort. StorrageManager war ein guter Tip. Aber ich kämpfe seit gestern damit herum, aber dieser verlangt API 24 und ich habe nur 23.
    Es soll aber eine Lösung auch für 23 geben, dass habe ich gelesen, jedoch habe ich immer noch nichts passendes gefunden. Für ein Stück Quellcode wäre ich sehr dankbar.
    Ich verzweifle bald. Es kann doch in Android nicht so mühsam sein eine Datei von A nach B zu kopieren. In anderen Programmiersprachen geht's doch auch einfacher.

    Vielleicht kann mir jemand weiterhelfen.

    Danke und LG
    Manfred
  • Es kann doch in Android nicht so mühsam sein eine Datei von A nach B zu kopieren. In anderen Programmiersprachen geht's doch auch einfacher.
    Das ganze hat nichts mit der Programmiersprache zu tun sondern mit dem Betriebssystem also Android.
    Android hat seit KitKat einiges in der Richtung verändert.
    Du musst immer erst prüfen welche Version du hast um die richtige Variante auszuwählen.

    Es ist nicht immer gleich den Path zur sd karte zu finden.


    Bei API 23 mache ich das so
    File[] fs = context.getExternalFilesDirs(null);
    String extPath = "";
    // at index 0 you have the internal storage and at index 1 the real external...
    if (fs != null && fs.length >= 2)
    {
    extPath = fs[1].getAbsolutePath();
    }


    Beachte aber auch das du ab API 23 die Permission auch zur Laufzeit abfragen musst.
    <uses-permission android:name="android.permission.STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    Reicht da nicht mehr.


    diller-technologies.de/android_fileStorage.html


    ansonsten würde ich es mal mit dem Storage Access Framework versuchen.

    techotopia.com/index.php/An_An…_Access_Framework_Example


    ab APi 24 ist der StorrageManager die bessere wahl.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Sorry, ich meinte eh das Betriebssystem.

    DANKE DANKE, Deine Anleitung war perfekt, jetzt funkt es.

    Aber noch eine Kleinigkeit: In Deinem Beispiel gibt Du "extPath = fs[1].getAbsolutePath();" an. Dann steht die Datei im Verzeichnis Android\Data\...... Mit welchem Befehl kann ich in meine selbst erstellten Verzeichnisse schreiben, das in der gleichen Ebene wie Android steht, und auch von PC aus sichtbar ist.

    Danke und LG
    Manfred