Android 4.0.3, window.openDatabase не работает

Я работаю над мобильным приложением, для этого использую html5/js с Phonegap. Я храню некоторые данные в локальной базе данных с помощью window.openDatabase(...).

Это нормально работает с Android 2.x. Но когда я пытаюсь использовать Android 4.0.3, я получаю следующую ошибку: D/CordovaLog(698): Uncaught TypeError: Object [object DOMWindow] has no method 'openDatabase'

Мой код:

if (!window.openDatabase)
    alert("Error: can't open local database");
if (!localStorage)
    alert("Error: localstorage not usable");

var db = window.openDatabase("Database", "1.0", "DatabaseName", 200000);

У вас есть идея, откуда это взялось и как я могу это решить? Заранее спасибо.

С уважением, Ви.


person Vi.    schedule 22.08.2012    source источник


Ответы (3)


Согласно http://androidforums.com/application-development/103644-why-doesnt-work-javascript-opendatabase-android.html, с самого начала в Android была сомнительная поддержка метода window.OpenDatabase(). Вы можете просмотреть эту ветку StackOverflow: Android 4.0. 1 нарушает локальное хранилище WebView HTML 5?

person gtr123    schedule 23.08.2012

Я решил свою проблему, обновив библиотеку phonegap (до версии 2.0). У меня была версия 1.9 для .jar, и я всегда использовал старую версию для файла .js: версия 1.4.

Я обнаружил, что в какой-то версии DroidGap.java конфигурация WebSettings из WebView не активирует базу данных. Но, возможно, это просто потому, что у меня была очень старая версия для .js lib.

Так что теперь, кажется, все в порядке.

Спасибо за вашу помощь.

person Vi.    schedule 23.08.2012

Я исследовал это и обнаружил, что проблема вызвана попыткой открыть (создать) базу данных с большим предполагаемым размером.

Просто начните с 5 КБ (5 * 1024), а затем перейдите на 5 МБ (5 * 1024 * 1024).

var db = window.openDatabase('mydb', '1.0', 'Test DB', 5 * 1024);

person Peter    schedule 15.11.2016