Android kein Zugriff möglich

Startseite Foren Deutsches LiveCode-Forum Android kein Zugriff möglich

Ansicht von 14 Antwort-Themen
  • Autor
    Beiträge
    • #17295
      Radmuehl
      Teilnehmer

      Es ist soweit. Die App ist eigentlich fertig und funktioniert als Windows-Version. Unter Android leider nicht. Bei der Fehlersuche bin ich darauf gekommen, dass es an den Zugriffen zu Dateien und Datenbank liegen muss.

      Zum Hintergrund:
      Ich lese in der App Grunddaten aus Textdateien ein. Nach Änderung werden sie wieder in die Texdateien geschrieben.

      Das funktioniert unter Android nicht.

      Die App greift auf meine SQLite-Datenbank zu, auch das scheint unter Android nicht zu gehen. Ich kann keine neuen Daten erfassen und auch keine bestehenden Datensätze löschen.

      Unter den Standalone Application Settings habe ich mal alle Rechte die anklickbar sind eingestellt. Die benötigten Dateien, aus denen ich lese und hineinschreibe, habe ich unter Copy Files angegeben. Auch die Datenbank.

      Jetzt bin ich mal wieder mit meinem Latein am Ende.

      Viele Grüße

      Dieter

    • #17297
      Klaus Major
      Moderator

      Hi Dieter,

      alles, was Du unter "Copy files" der Runtime hinzufügst, findest Du dann in
      -> specialfolderpath("resources"), dürfte Dir bekannt sein.
      ABER da haben wir keine Schreibrechte, daher rührt wahrscheinlich Dein Ungemach.

      Du musst alles, was bearbeitet werden soll, beim ersten Programmstart in diesen Ordner kopieren:
      -> specialfolderpath("documents")
      DA dürfen wit tun und lassen, was wir wollen. 🙂

      Siehe hier für Hinweise, wie das zu bewerkstelligen ist:
      http://www.livecode-blog.de/forums/topic/sqlite-datenbank-speichert-nicht/

      Gruß

      Klaus

    • #17322
      Radmuehl
      Teilnehmer

      Hallo Klaus,

      ich habe folgenden Code erstellt. Es gibt keine Fehlermeldung, aber ich kann immer noch nicht auf die Datenbank zugreifen. Die Datenbank Auto.db finde ich im Handy nicht im Dokumentenordner.

      on openstack
         
           if the environment is "mobile" then
           
            set the fullscreenmode of me to "exactFit"
            
             put specialFolderPath("resources") & "/auto.db" into tQuellDB
            put specialFolderPath("documents") & "/auto.db" into tZielDB
            
            if there is NOT a file tZielDB then
               put url("binfile:" & tQuellDB) into url("binfile:" & tZielDB)
            end if
            put tZielDB into xpfd
         else
            
            put specialfolderpath("resources") & "/auto.db" into xpfd
         end if
        
      end openstack

      Viele Grüße

      Dieter

    • #17323
      Klaus Major
      Moderator

      Was sagt denn -> the result
      nach einer (missglückten) Datenbankabfrage oder beim Versuch die DB zu öffnen?

    • #17325
      Radmuehl
      Teilnehmer

      Ich muss gestehen dass ich nicht weiß was Du meinst. Ich markiere z.B. einen Datensatz und betätige den Button "löschen" aber es tut sich nichts. Auch kann ich keinerlei Daten im Handy ändern. Habe es auch schon auf meinem Tablet versucht.

      Gruß
      Dieter

    • #17326
      Klaus Major
      Moderator

      Do kannst und solltest nach jeder Datenbankoperation the result checken:

      ...
      put revDBWasAuchImmer (dieDBId,tSQL) into xxx
      ## THE RESULT ist immer LEER bei Erfolg!
      
      ## Spezialfall Datenbank: Dann beginnt ein Fehler immer mit REVDBERR
      if the result begins with "revdberr" then
        answer the result
      end if
      ...
    • #17330
      Radmuehl
      Teilnehmer

      Hallo Klaus,

      das Forum bringt mir wieder Fehler beim antworten, wenn ich viel schreibe. Habe meine Antwort mal als Textdatei auf meinen Server gelegt.

      Meine Antwort

      Viele Grüße
      Dieter

    • #17331
      Klaus Major
      Moderator

      Ich habe die selben Probleme hier, habe Hauke Bescheid gegeben...

    • #17333
      Radmuehl
      Teilnehmer

      Hallo Klaus,

      Du hast geschrieben:

      Klaus Major schrieb:

      ...
      put revOpenDatabase ("sqlite","D:/Daten/Livecode/Version8/Auto/auto.db", , , , ) into dbid
      ...

      Und Dein Handy hat Zugriff auf Deine D: Festplatte? Ernsthaft? 😎
      Das bitte erst mal richten und dann sehen wir weiter...

      Jetzt bin ich verwirrt.
      Das ist doch der Code aus der Entwicklungsumgebung. Die Datenbank wird doch beim Erzeugen der Standaloneapplication mit angegeben. Was soll ich denn in der Entwicklungsumgebung sonst eingeben. Da muss doch der Pfad eingegeben werden.

      Gruß
      Dieter

    • #17334
      Klaus Major
      Moderator

      Hast du das doch lesen können? Kannst Du hellsehen? 😀
      Ich hatte es drei Mal gepostet und immer diese Fehlermeldungen "Authorname" etc. bekommen und dann aufgegeben...

      specialfolderpath("resources") funktioniert auch in der IDE!
      Einfach mal in der Message Box eingeben und staunen:
      answer specialfolderpath("resources")

      Es liefert den Pfad zum Ordner mit dem aktuellen Stack zurück!
      also kannst Du damit auch in deinen Skripten arbeiten.

      ...
      ## Wir sind in der IDE:
      If the environment = "development" then
         put specialfolderpath("resources") & "/auto.db" into xpfd
      end if
      ...
    • #17338
      Radmuehl
      Teilnehmer

      Im Forum konnte ich es nicht lesen. Ich bin auch kein Hellseher. Ich habe aber eine Mail bekommen, dass ein neuer Beitrag geschrieben wurde. Da stand der Text drin.

    • #17339
      Klaus Major
      Moderator

      AHA! OK, das klingt einleuchtender... 😀

    • #17354
      Radmuehl
      Teilnehmer

      Hallo Klaus,

      ich habe den Datenbankaufruf jetzt umgebaut und rufe die Datenbank mit folgendem Code auf:

      put revOpenDatabase ("sqlite",specialfolderpath("resources") & "/auto.db", , , , ) into dbid

      Das funktioniert prima.

      Wie kann ich jetzt das Handy dazu bewegen auf einen Ordner zuzugreifen wo ich lese und Schreibrechte für die Datenbank habe.

      Nachfolgend das was ich bisher verstehe:

      Kopieren der Pfade in die Variablen für Quelle und Ziel

      put specialFolderPath("resources") & "/auto.db" into tQuellDB
       put specialFolderPath("documents") & "/auto.db"into  tZielDB

      Abfrage ob die Datenbank im Dokumentenordner liegt. Wenn nein, soll sie da hin kopiert werden. Das macht er unter Windows auch.

       if there is NOT a file tZielDB then
             put url("binfile:" & tQuellDB) into url("binfile:" & tZielDB)
       end if

      Kopiert den Pfad der ZielDB in die Variable xpfd (Wofür ist das gut?)
      put tZielDB into xpfd

      Kopiert den Ursprungspfad der QuellDB in die Variable xpfd (Wofür ist das gut?)
      put specialfolderpath("resources") & "/auto.db" into xpfd

      Viele Grüße

      Dieter

    • #17355
      Klaus Major
      Moderator

      Na toll, klappt mal wieder nicht hier, aber Du hast die Antwort
      vielleicht schon wieder per Mail erhalten. 🙂

    • #17357
      Radmuehl
      Teilnehmer

      Dieses mal leider nicht. Kannst du sie mir pepr Mail senden?

      Du-lernst-es-nie@straulino.de

Ansicht von 14 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.