我创建了一个基本上托管webView控件的原生Android应用。然后,该webView用于加载从JavaScript调用window.openDatabase的页面。我可以通过验证window.openDatabase来成功确认API是否存在。
在托管的webView控件中调用此方法时,返回null。在Android浏览器中调用相同的方法将返回数据库的实例。
是否有人知道需要设置为访问数据库的webView控件的清单或设置中的渗透?这在本机应用程序中是否可行。
答案 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