android - 安全错误 : DOM Exception 18 When opening database in WebView

标签 android webview

我有两个应用程序,它们都在 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/

相关文章:

android - RecyclerView 中的滚动条颜色

android - 我可以将 Android 4 HttpResponseCache 与基于 WebView 的应用程序一起使用吗?

Android:从本地存储加载图像到webview

android - 操作栏后退按钮在 webview 中不起作用

android - x 轴下的值不显示在折线图 MPAndroidChart 中

android - RelativeLayout 在动态位置创建按钮

android - RecyclerView 适配器不适用于 butterknife

android - 如果 webview 中的 url 相同,如何开始第三个 Activity

Android : 5. 0 : WebChromeClient. FileChooserParams 无法解析为类型

android - Android sqlite 数据库中是否可以嵌套集?