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

标签 javascript android

我创建了一个原生 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/

相关文章:

python - 在 Python 中使用 Android 的 `Timer.schedule`

javascript - CSS 文本阴影值 RegEx

java - iOS 调用 [NSDate timeIntervalSinceNow] 的 Android/Java 等价物是什么?

javascript - 允许输入 Javascript 中的键盘快捷键

javascript - Javascript中的else循环?

android - 如何在android中显示pdf文件和编辑内容

android - 在 Android 中将 png 或 jpg 图像转换为 Base64 字符串

android - Google Web Fonts 不适用于 Android 4.2.2 高棉语

javascript - 在 javascript 中将 '{' 和 '}' 存储在两个数组中的算法

javascript - 为什么 typeof Object,String,Number... - Javascript 中的函数