txt-datei auf sd-karte schreiben

  • hallo,
    leider schon wieder eine frage,
    ich will zum speichern einen string in eine txt-datei auf meiner sd-karte speichern, habe folgende sachen versucht,
    es kommt kein fehler aber es wird auch nichts geschrieben.


    vorweg, alles permissions stehen in der manifest und die datei existiert, denn das auslesen und anzeigen in einem toast funktioniert.

    es kommt eben nicht der fehler am händy wie sonst dass es abgebrochen wird, nur leider wird auch nichts reingeschrieben.


    danke
    Tino

  • hallo du sagst du hasst alle permision im Manifest da reicht nicht mehr.


    Erstmal eine frage und der welcher sdk Version testest und schreibst du?
    An 28 funktioniert es nicht mehr mit den normalen File befehlen.



    Du sagst die Datei existiert wie kommst du darauf? Wie hast du die erstellt?
    Ein prüfen ob die Datei existiert ist nicht in deinem Code.


    Auch ist das bestimmt nicht der richtige path zur sd Karte.

  • hallo,
    ich teste mit version 29 und auch in der activity stehen noch folgende permission abfragen:

    Code
    public static void verifyStoragePermissions(Activity activity) {
            int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if (permission != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(
                        activity,
                        PERMISSIONS_STORAGE,
                        REQUEST_EXTERNAL_STORAGE
                );
            }
        }

    die datei habe ich einfach als txt datei erstellt und auf die sd-karte geschoben mit pc und kabel....
    sie existiert, denn ich kann sie ja auslesen und den inhalt, nur eine zeile text per toast ausgeben....


    der pfad: ""/storage/sdcard1/tino.txt" stimmt doch auch, denn ich kann bilder die darin liegen auch in nem zb. photoview anzeigen


    tino

  • Ab sdk 28 geht das mit dem Zugriff auf die sdkarte nicht mehr so einfach wie in deinem Code.



    https://developer.android.com/…ta-storage#scoped-storage


    https://developer.android.com/training/data-storage


    https://stackoverflow.com/a/40201333/4975457


    Und was du on den toast ausgibst hat mit lesen der dadei nichts zu tun. Ist ja nur der string den du selber gesetzt hast.
    Der Name der Datei.
    Gelesen wurde da bestimmt nichts.

  • hi,


    wie meinst du das mit selbst gesetzt, so mache ich es und das ist doch wirklich das was in der datei steht...

  • Wo ist denn hier dein toast?


    Im ersten Code zeigt der toast nur den dadei namen den du selber gesetzt hast. Mehr nicht.


    Und wie ich dir sagte geht es mit den einfachen Java Datei Methoden nicht mehr.


    Was steht denn in der Variablen Inhalt.


    Wo ist da ein toast der das. Anzeigt.

  • hallo,
    also alles was ich versuch, nie wird was reingeschrieben?
    falls jemand eine kleine beispiel activity hat, nur ein edittext-feld und dessen inhalt als string speichern...
    vielen dank dafür, ansonsten geh ich heut lieber langlaufen


    gruss an alle
    Tino

  • kleines fazit noch,


    ich kann aus txt-dateien lesen und sie erzeugen, nur nichts reinschreiben....


    jetzt mach ich es so, ich lese die alte komplett aus, hänge den neuen string an und mit mkdir() überschreib ich einfach die alte


    gruss Tino

  • Hallo dann zeige uns oder mir doch mal. Wie du das machst. Ich glaube nicht das dies so klappt. Bitte zeige wo und wie du das ausliest was in der Datei steh.
    Auch wie du es testet zb den toast.


    Lehesen der Textdatei könnte gehen. schreiben ohne SAF unter sdk 28 bestimmt nicht. Habe ich nicht geschaft.. Auch das Erstellen mit mkdir ging mit 28 bei mir nicht mehr. Der boolien den mkdir zurück gibt war immer false.




    Mit sdk 29 habe ich es noch nicht getestete.


    Deshalb würde ich gene den Code sehen.



    Interessant wäre hier auch welche compile und target sdk du im gradle benutzt.
    Sollte die auf 26 stehen glaube ich dir das es geht sonst nicht.

  • hi,
    also das sind meine 2 methoden zum lesen und neu anlegen mit mkdir...

    nicht am namen "hundenase3.txt" stören, nur ein testname, so geht es bei mir und geschrieben wird das ganze im internen speicher im ordner Download,
    auf die sd-karte hab ich es so dann nicht mehr versucht


    ach so und ich nehme 29, was anderes nie versucht...
    Tino

  • Gut im download Ordner interner Speicher geht das. Nur einen vollen Zugriff auf die sdkarte intern oder sogar auf die echte externe wirst du so nicht hinbekommen.


    Der Download Ordner gehör zu dem internen Speicher obwohl er auf der emulieren sd Karte ist.
    Das komplette Inhaltsverzeichnis der Karte wirst du so nicht lesen können.

  • hallo,


    ja kann alles sein, ich habe jetzt eine textdatei in diesem internen speicher und das reicht mir aus um die paar strings zu speichern.
    bin froh das es so geht, anderen möglichkeiten wie datenbank room oder sowas teste ich irgendwann mal


    danke an alle
    Tino

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!