У меня возникли проблемы с веб-сайтом Android, SQLite и моим целевым устройством. На физическом устройстве база данных недоступна (см. Ошибки в конце).Открыть Sqlite db в webview
Установка в WebView:
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath("/data/data/de.sqlite.webview/databases");
Я определения WebView в методе onCreate
, и установив квоты обновления вдвое выше расчетной или больше, чем в определении HTML5.
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater)
{
quotaUpdater.updateQuota(204801); //estimatedSize * 2
}
});
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(...)
}
На эмуляторе и на Chrome все работает отлично, но если развернуть приложение на моем galaxys2 я получаю сообщение об ошибке: OpenDatabase не определен.
Следующий HTML-код работает в хроме и в сэмулированному WebView:
db = new HKSQL();
db.openSQL();
today = getTodayDate();
createDbTable_LastLogin();
//HKSQL Class
function HkSQL(){
this.query;
this.result;
this.database;
}
HkSQL.prototype.openSQL = function(){
this.database = openDatabase("hkapp","1.0","HKApp","65536");
}
//an example query to create my db
CREATE TABLE IF NOT EXISTS HK_lastlogin (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, datum TEXT NOT NULL)
Я понятия не имею, почему он не работает на моем устройстве. Я думал о разрешениях на чтение и запись, но файл .db
уже создан. Вот некоторые сообщения об ошибках, которые, я думаю, цель одной и той же проблемой:
Uncaught ReferenceError: openDatabase is not defined
Uncaught TypeError: Object [object DOMWindow] has no method 'openDatabase'
Вы правы, вырезаны из большого количества кода. Я добавил описание класса. Его действительно странно, когда AVD эмулирует 2.3.3 все работает, но на 4.0.3 есть такая же ошибка, как на моем sgs2 (4.0.4) – morritza
Вот такая же проблема http://code.google.com/p/android-scripting/issues/detail? id = 425 – morritza
Последовало несколько ссылок оттуда. Я вижу только одно отличие от того, что у вас есть. Они добавили 'settings.setJavaScriptCanOpenWindowsAutomatically (true);'. – Barak