我有两个应用程序,它们都在 webview 中使用 SQL 数据库。
其中一个在我的设备上运行良好,但另一个在尝试打开数据库时引发此错误。
Uncaught Error :SECURITY_ERR:DOM 异常 18
两个项目中的一切都很相似,我尝试了很多东西但没有找到原因。
我从头开始一个项目,效果很好。
最佳答案
这花了我一整天的时间才弄清楚,所以我想提供有关如何在 Android 4.2 和 4.3 上解决此问题的完整文档。
您可以从 WebView 中的 file://
URL 使用 Web SQL。 Cordova 人设法做到了。只有三件事您必须做:
1) 调用 setDatabaseEnabled()
(废话):
webView.getSettings().setDatabaseEnabled(true);
2) 设置数据库文件路径。是的,这在 Android 4.4 中已弃用,但如果您想避免 Kitkat 之前的 DOM 异常 18,它是必需的:
String databasePath = getContext().getApplicationContext().getDir(
"database", Context.MODE_PRIVATE).getPath();
webView.getSettings().setDatabasePath(databasePath);
3) 设置onExceededDatabaseQuota
处理程序。是的,它在 Android 4.4 中已被弃用,等等等等。
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize,
long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 2);
}
});
如果您跳过这 3 个步骤中的任何一个,那么您将收到 DOM 异常 18 错误并且 Web SQL 将无法运行。您已收到警告。
关于android - 安全错误 : DOM Exception 18 When opening database in WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062591/