2010-03-19 46 views
5

我創建了一個原生Android應用程序,基本上託管了一個webView控件。該webView然後用於加載從JavaScript調用window.openDatabase的頁面。通過驗證window.openDatabase,我可以成功確認API存在。如何從android應用程序中託管的webView調用window.openDatabase?

調用此方法在託管的webView控件中調用時返回null。在Android瀏覽器中調用相同的方法會返回數據庫的一個實例。

有沒有人知道需要設置訪問數據庫的webView控件清單或設置中的滲透?這甚至可以在本地應用程序。

回答

8

要使用就得configure your WebView數據庫API接受HTML5數據庫調用:

WebSettings settings = webView.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setJavaScriptCanOpenWindowsAutomatically(true); 
... 
settings.setDatabaseEnabled(true); 
settings.setDatabasePath("/data/data/your.package.name/database_name"); 

您也可以覆蓋你WebChromeClient的onExceededDatabaseQuota方法,如果你想控制你的存儲配額:

public void onExceededDatabaseQuota(String url, String 
databaseIdentifier, long currentQuota, long estimatedSize, long 
totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
       quotaUpdater.updateQuota(204801); 
} 
+0

謝謝pfleidi,我以前實際上已經有了這些設置。我是否需要更改清單文件中的任何內容以給我的應用程序額外的權限?你有沒有在模擬器或設備上成功運行過這個程序,我目前正在使用NexusOne。 – Kevin 2010-03-19 17:24:48

+1

是的,我最近做了一些測試。確保你的包名是正確的。 – pfleidi 2010-03-24 23:20:51

5

該解決方案爲我工作:

WebSettings settings = myWebView.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setDatabaseEnabled(true); 
String databasePath = this.getApplicationContext().getDir("database", 
         Context.MODE_PRIVATE).getPath(); 
settings.setDatabasePath(databasePath); 

也可以找到here

相關問題