Android-Handy-Anwendung mit Problemen mit SQlite und lokalen Speicher auf Samsung Galaxy Geräte

Ich habe ein Problem mit einer PhoneGap App, die für Android und iOS gebaut wurde. Auf iOS und den meisten Android-Geräten funktioniert es perfekt, außer für Samsung Galaxy S3 und S4.

Auf der ersten Seite laden die App eine lokale SQL-Datenbank. Diese Datenbank wird verwendet, um Werte aus Fragen und Antworten in der App zu speichern.

  • Android Studio 2.3 Kanarienvogel fehlt 'Starten Sie Standalone SDK Manager' Option in 'SDK Manager'
  • Android SQLite Ausgabe - Tabelle ... hat keine Spalte namens
  • Gibt es einen Pfad ähnlich der Datei: /// android_asset / das zeigt auf das Apps-Verzeichnis?
  • Android SDK AsyncTask doInBackground läuft nicht (Unterklasse)
  • Android EditText - fertiges Tippereignis
  • Wie kann ich ein CordovaWebView von PhoneGap über eine native Ansicht in Android überlagern?
  • Das Problem, das ich bei den Samsung-Geräten habe, ist, dass die Datenbank beim ersten Start der App nicht ordnungsgemäß geladen wird. Wenn jedoch ein Benutzer die App vollständig schließt und sie wieder öffnet, wird die Datenbank ohne Fehler erstellt. Da die erste Seite einen Benutzer benötigt, um ihr Alter einzugeben und dann den Wert in einer SQL-Datenbank zu speichern, bekommt der Benutzer den Eindruck, dass die App an dieser Stelle eingefroren ist.

    Initialisierungscode für Datenbank:

    Index.html

    document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { populateDB(); } 

    Main_js.js

     function populateDB() { var db = window.openDatabase("Database", "1.0", "My Database", 20000); db.transaction(populate_DB, errorCB, successCB); } function populate_DB(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS Options (ID INTEGER UNIQUE NOT NULL, Name TEXT NOT NULL, Value INTEGER NOT NULL)'); tx.executeSql('CREATE TABLE IF NOT EXISTS Questions (ID INTEGER UNIQUE NOT NULL, Question TEXT NOT NULL, Answer TEXT)'); tx.executeSql('INSERT OR IGNORE INTO Options (ID, Name, Value) VALUES (1, "License", 0)'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (0, "Age","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (1, "two","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (2, "three","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (3, "four","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (4, "five","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (5, "six","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (6, "seven","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (7, "eigth","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (8, "nine","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (9, "ten","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (10, "eleven","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (11, "twelve","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (12, "thirteen","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (13, "fourteen","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (14, "fifteen","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (15, "sixteen","")'); tx.executeSql('INSERT OR IGNORE INTO Questions (ID, Question, Answer) VALUES (16, "seventeen","")'); } 

    Age_button_pressed

     function age_save() { var db = window.openDatabase("Database", "1.0", "My Database", 20000); loc = "q_sex.html"; db.transaction(age_query, errorCB); } function age_query(tx) { var age = document.getElementById("a_age").value; tx.executeSql('UPDATE Questions SET Answer = "' + age + '" WHERE ID="0";', [], q_querySuccess, errorCB); } 

    Nach age_button_pressed gibt es nichts, was passiert und die Datenbank aktualisiert das Ergebnis nicht.

    Es ist nur ein Problem auf dem Samsung Galaxy S3 und S4, und ich frage mich, ob Samsung WebKit hat etwas damit zu tun?

  • Öffnen Sie html-Datei, die sich in meiner Anwendung mit WebView befindet
  • So ändern Sie das Layout (ohne Codierung) in Android Studio
  • Android: Holen Sie alle Benachrichtigungen per Code
  • Ist es wirklich unmöglich, Android Apps aus Reverse Engineering zu schützen?
  • Was ist das Angebot von HOUR_OF_DAY?
  • Wie kalibriere ich Android Accelerometer & Reduzieren Lärm, Eliminieren Gravity
  • 4 Solutions collect form web for “Android-Handy-Anwendung mit Problemen mit SQlite und lokalen Speicher auf Samsung Galaxy Geräte”

    Es könnte sein, weil Sie die Datenbank zweimal öffnen. Nur einmal öffnen und alle Ihre Transaktionen auf dieser einzigen Instanz machen. Stellen Sie außerdem sicher, dass Ihre vorherige Transaktion beendet ist, bevor Sie eine andere starten. Du musst dich nicht darum kümmern, aber nach meiner Erfahrung ist Cordovas (PhoneGap) WebSQL ein bisschen verrückt.

    Ich habe telefonisch bis 2.0 Version auf 3.1 für Samsung und Htc Geräte und noch nie ein solches Problem gesehen. Welche Version benutzt du? Versuchen Sie, stabile Versionen zu verwenden, nicht Beta.

    Zuerst einmal kann man manchmal Probleme mit der Programmierung von Synchronisierungsproblemen beim Start haben. Vielleicht kann das Problem damit zusammenhängen. Sie können versuchen, dass nur setzen deviceready in index.html und nach deviceready, richten Sie Ihre Seite auf Ihre Hauptseite. In der Hauptseite haben Sie Ihre Datenbankoperationen (wie das Erstellen von Tabellen und das Einfügen).

    Zweitens müssen Sie Fehlermeldungen auf errorCB-Funktion verfolgen. Fehler-Funktion bekommt einen Parameter und dieser Parameter enthält Fehlercode und Fehlermeldung. Überprüfen Sie diese aus.

    Und zuletzt, wenn Sie s4 Gerät mit Android-Version 4.4 verwenden, können Sie Ihre Javascript-Codes mit Chrom debuggen. Debugging ist ein großer Vorteil für das Telefongap. Benutze es.

    Ich glaube nicht, dass dies ein Problem des Gerätes war, es könnte beschäftigt sein. Vielleicht könnten Sie versuchen, jeden Auftrag nach Datenbank auszuführen, indem Sie die Rückrufe verwenden:

     BBDDD.transaction( function(tx){ tx.executeSql("CREATE TABLE IF NOT EXISTS DateSession (\n\ id INTEGER PRIMARY KEY AUTOINCREMENT,\n\ field1 TEXT NOT NULL,\n\ field2 TEXT NOT NULL)"); }, function(err){ console.log("Error"+err.code); }, function(){ BBDDD.transaction(function(tx){ tx.executeSql("CREATE TABLE IF NOT EXISTS Table2 (\n\ id INTEGER PRIMARY KEY AUTOINCREMENT,\n\ field1 TEXT NOT NULL,\n\ field2 TEXT NOT NULL)"); }, function(err){ console.log("Error"+err.code); }, function(){ }); }); 

    Versuchen Sie, die DB-Größe von 20000 auf 200000 zu erhöhen

    Var db = window.openDatabase ("Datenbank", "1.0", "Meine Datenbank", 200000);

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.