我遇到了一些與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