我遇到了一些与android webview,SQLite和我的目标设备有关的问题。在物理设备上,数据库不可访问(请参阅最后的错误)。在webview中打开Sqlite数据库
web视图的设置:
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath("/data/data/de.sqlite.webview/databases");
我限定在onCreate
方法web视图,以及设置更新的配额的两倍高估计或小于在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