Einlesen von (kopierten) Textdateien per Scanner

  • Hallo alle zusammen,


    ich sitze gerade an einem Problem, bei dem ich aktuell leider nicht mehr weiter weiß. Ich hoffe, einer von euch kann mich auf die richtige Spur bringen.


    Ich schreibe an einer App, die unter anderen interne Daten in eine Textdatei schreiben und auch wieder auslesen soll. Das Schreiben der Textdateien ist kein Problem, Zugriffsrechte auf den Ordner (öffentlicher Ordner "Documents") habe ich manuell gesetzt bzw. prüfe ich an separater Stelle. Dateien und Unterordner werden auch als existent erkannt. Der folgende Code simuliert die gewünschte Funktion:


    Die entsprechende App zeigt hier 2 Buttons und 2 Textzeilen. Der erste Button schreibt die Textdatei, der zweite Button liest diese wieder ein und gibt den Inhalt auf die zweite Textzeile aus. Dies funktioniert auch soweit, ABER sobald ich die Textdatei händisch in den entsprechenden Ordner kopiere, wird diese nicht mehr eingelesen und die App stürzt ab (bzw. liefert eine Exception und stoppt).

    Im Debug Modus kann ich sehen, dass die kopierte Textdatei zwar als existent erkannt wird, aber kein Lesezugriff möglich ist. Ich habe hier die Vermutung, dass ein anderer Prozess die Textdatei blockiert??? Kann ich dies irgendwie ändern oder die Leserechte manuell setzen?


    Die Zugriffsrechte für die App habe ich manuell in den Android Einstellungen gesetzt. Eine entsprechende Prüfung im Code bestätigt die Lese- und Schreibrechte auch.


    Vorschläge oder Ideen?


    Danke schon mal für die Hilfe ...

  • Hallo

    Mit den klassischen File Methode wird das in Android auch seit mindesten Version 11 nicht mehr gehen.


    Erstens hast du schon mal keine Permission die haben sich schon seit Version 6 geändert und ab 11 nur noch SAF


    Storage Access Frameworks, Scoped Storage




    PS ab A13 ist es nun auch mit den zwischen Lösungen vorbei .

  • Erstens hast du schon mal keine Permission die haben sich schon seit Version 6 geändert und ab 11 nur noch SAF

    ... doch, die Permission habe ich. Habe ich testweise schon abgefragt, ist nur nicht im obigen Code enthalten. Und das Schreiben und Lesen funktioniert ja auch solange ich die Textdatei nicht händisch in den entsprechenden Ordner schiebe!


    Habe obigen Code jetzt mal auf meinem Tablet ausgeführt (Android 11) und siehe da, ich kann problemlos eine händisch erstellte/kopierte Datei einlesen. Es scheint also eher ein Problem mit dem Emulator in Android Studio zu sein.

  • Environment.getExternalStoragePublicDirectory ist seit API 29 Deprecated

    https://developer.android.com/reference/android/os/Environment#getExternalStoragePublicDirectory(java.lang.String)<br>

    <br>

    https://stackoverflow.com/questions/57116335/environment-getexternalstoragedirectory-deprecated-in-api-level-29-java<br>

    <br>

    <br>

  • ... scheint komplexer zu sein, als ich dachte. Werde jetzt am besten mal bei Null anfangen und mich Schritt für Schritt vortasten. Das Speichern/Lesen im external Storage ist aktuell leider Neuland für mich.


    Danke für die Infos. Ich denke, ich werde da ggf. ein neuen Thread erstellen und auf gute Tips hoffen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!