我创建了一个原生 Android 应用程序,它主要托管一个 webView 控件。然后使用该 webView 加载从 JavaScript 调用 window.openDatabase 的页面。我可以通过验证 window.openDatabase 成功确认 API 存在。
在托管的 webView 控件中调用此方法时会返回 null。在 Android 浏览器中调用相同的方法会返回数据库的一个实例。
有谁知道需要设置访问数据库的 list 中的权限或webView控件上的设置?这在 native 应用程序中甚至可能吗?
最佳答案
要使用数据库 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);
}
关于javascript - 如何从 Android 应用程序中托管的 webView 调用 window.openDatabase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474475/