German txt-Datei speichern

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich schaffe es einfach nicht, eine kleine Textdatei in einem vom User gewählten Verzeichnis oder auf USB-Stick zu speichern.
Der Filedialog geht auf, ich kann das Verzichnis wählen, dort Schreibrechte vergeben, dann stürzt meine App ab.
Ich finde den Fehler einfach nicht o_O

B4X:
Sub BtnDaba_4_Click 
    'Export Spieler-Datenbank
    '
    Storage.SelectDir(False)
    Wait For Storage_ExternalFolderAvailable
    FoldersStack.Clear
    Enter4_Folder(Storage.Root)
End Sub

Private Sub Enter4_Folder (folder As ExternalFile)
    FoldersStack.Add(folder)
    Dim sb As StringBuilder
    sb.Initialize
    '
    For Each fl As ExternalFile In FoldersStack
        If fl = Storage.Root Then
            sb.Append("Root")
        Else
            sb.Append(" / ").Append(fl.Name)
        End If
    Next
    '
    Dim destfile As ExternalFile = Storage.CreateNewFile(Storage.Root,"Mitspieler.txt")  'define destfile
    Dim Out As OutputStream = Storage.OpenOutputStream(destfile)                         'create Outputstream
    Dim In As InputStream  = File.OpenInput(File.Combine(oListDir,"/"),"Mitspieler.txt") 'create Inputstream
    File.Copy2(In,Out)                                                                      'copy file
    Out.Close                                                                            'close Outputstream
    '   
    ToastMessageShow("Datenbank wurde erfolgreich exportiert.", False)
    '
End Sub
 

DonManfred

Expert
Licensed User
Longtime User

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

Hier kann man genau sehen, wo die App abstürzt, die 1 wird noch im Log gezeigt:
B4X:
'
Log("1")
'
Storage.SelectDir(False)
Wait For Storage_ExternalFolderAvailable
'
Log("2")
'  
FoldersStack.Clear
EnterFolder(Storage.Root)
'

Hier die das Log mit Fehlermeldung:
1
** Activity (main) Pause, UserClosed = false **
sending message to waiting queue (OnActivityResult)
running waiting messages (1)
content://com.android.externalstorage.documents/tree/primary%3AVM
externalstorage_vvvvvvvvvvvvvv4 (java line: 196)
java.lang.ClassNotFoundException: androidx$documentfile$provider$DocumentFile
at anywheresoftware.b4j.object.JavaObject.getCorrectClassName(JavaObject.java:289)
at anywheresoftware.b4j.object.JavaObject.InitializeStatic(JavaObject.java:75)
at pbit.skat.listenfuehrer2.externalstorage._vvvvvvvvvvvvvv4(externalstorage.java:196)
at pbit.skat.listenfuehrer2.externalstorage._vvvvvvvvvvvvvvv1(externalstorage.java:358)
at pbit.skat.listenfuehrer2.externalstorage._ion_event(externalstorage.java:245)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:221)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:201)
at anywheresoftware.b4j.object.JavaObject$1.invoke(JavaObject.java:238)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy2.ResultArrived(Unknown Source)
at anywheresoftware.b4a.BA$4.run(BA.java:593)
at anywheresoftware.b4a.BA.setActivityPaused(BA.java:467)
at pbit.skat.listenfuehrer2.main$ResumeMessage.run(main.java:313)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7870)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)


B4X:
oListDir = File.DirInternal & "/MeineApp"
File.MakeDir(File.DirInternal,"MeineApp")
 

peternmb

Well-Known Member
Licensed User
Longtime User
Irgendwie habe ich das gefühl du benutzt entweder eine veraltete B4A Version oder ein veraltetes SDK.
B4A 13.40 64-Bit
C:\ANDROID\platforms\android-36\android.jar

Ich bin mir sicher, dass das bereits problemlos funktioniert hat.
Diese Funktion wird in meiner App öfters angeboten aber eher selten benötigt.
Keine Ahnung seit wann das nicht mehr funktioniert, ich vermute nach einem Update von B4A oder des SDK.

Ich versuche, das in einem kleineren Projekt nachzubilden, kann aber etwas dauern...
 

DonManfred

Expert
Licensed User
Longtime User

peternmb

Well-Known Member
Licensed User
Longtime User
Eine kopie des Compilationwindows könnte auch helfen.
B4A Version: 13.40
Parse den Code. (0.35s)
Java Version: 19
Building folders structure. (0.14s)
Kompiliere den Code. (0.38s)

Die Datei ObfuscatorMap.txt wurde im Objects-Verzeichnis angelegt.
Kompiliere Layoutcode. (0.07s)
Organisiere Libraries. (0.37s)
(AndroidX SDK)
Ressourcen zusammenstellen (0.79s)
Ressourcen verknüpfen (1.16s)
build tools: 36.0.0, android jar: android-36
Kompiliere generierten Java Code. (8.35s)
Suchen von Bibliotheken, die dexiert werden müssen. (0.03s)
Dex code (18.51s)
Dex merge (7.14s)
Kopieren von Bibliothek Ressourcen (1.27s)
ZipAlign file. (0.39s)
Signiere Paketdatei (privater Key). (0.77s)
Installiere Datei auf Gerät. (2.82s)
Installiere mit B4A-Bridge.
Erfolgreich abgeschlossen.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Wird da ein #AdditionalJar benötigt? Falls ja, ist das referenziert?
Danke, das war anscheinend das Problem.
B4X:
#AdditionalJar: com.android.support:support-core-utils
Da alles bereits funktioniert hat gehe ich davon aus, dass die Referenzierung versehenlich gelöscht wurde .

Werde noch weiter testen aber anscheinen funktioniert nach dem Einfügen dieser Zeile jetzt wieder alles normal.
Vielen Dank für die Hilfen.
 
Top