我在使用 android webview、SQLite 和我的目标设备时遇到了一些问题。在物理设备上,无法访问数据库(请参阅最后的错误)。
webview的设置:
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath("/data/data/de.sqlite.webview/databases");
我在onCreate
方法中定义了 webview,并将更新配额设置为估计值的两倍或大于 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( ... )
}
在 Emulator 和 Chrome 上一切正常,但如果我将应用程序部署到我的 galaxy2 我会收到一个错误:openDatabase is not defined。
以下 html 代码适用于 chrome 和模拟的 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'