如何从Android应用程序中托管的webView调用window.openDatabase?

时间:2010-03-19 01:37:22

标签: javascript android

我创建了一个基本上托管webView控件的原生Android应用。然后,该webView用于加载从JavaScript调用window.openDatabase的页面。我可以通过验证window.openDatabase来成功确认API是否存在。

在托管的webView控件中调用此方法时,返回null。在Android浏览器中调用相同的方法将返回数据库的实例。

是否有人知道需要设置为访问数据库的webView控件的清单或设置中的渗透?这在本机应用程序中是否可行。

2 个答案:

答案 0 :(得分:8)

要使用数据库API,您必须configure your WebView接受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);
} 

答案 1 :(得分: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