【问题标题】:Android: WebSQL openDatabase is not definedAndroid:未定义 WebSQL openDatabase
【发布时间】:2014-02-23 21:49:48
【问题描述】:

我使用 AngularJs 开发了一个在 iOS 上运行良好的混合应用程序。 但现在我无法在 Android 上运行,我正在使用 WebSQL 并遇到错误:

openDatabase not defined.

将其添加到 webview 设置时消失了:

webSettings.setDatabaseEnabled(true);

但后来出现了:

02-24 03:08:10.687: E/Web Console(31421): Uncaught Error: SECURITY_ERR: DOM Exception 18 

在我使用 openDatabase 的同一行。

我不考虑更改我的数据库。

【问题讨论】:

    标签: android angularjs android-webview web-sql


    【解决方案1】:

    您尝试授予数据库多少配额?如果它超过了默认值(或者您的数据库后来增长到比您要求的更多)并且您还没有实现WebChromeClient.onExceededDatabaseQuota,那么您将收到此错误。

    另外请确保将数据库文件的路径设置为您的应用有权使用WebSettings.setDatabasePath[2] 访问的位置

    [1] http://developer.android.com/reference/android/webkit/WebChromeClient.html#onExceededDatabaseQuota(java.lang.String, java.lang.String, long, long, long, android.webkit.WebStorage.QuotaUpdater)

    [2]http://developer.android.com/reference/android/webkit/WebSettings.html#setDatabasePath(java.lang.String)

    【讨论】:

      【解决方案2】:

      也许这是一个安全错误,因为它违反了同源策略?设置webSettings.setAllowFileAccessFromFileURLs(true) 有帮助吗?

      【讨论】:

      • 您在哪个版本的 Android 上运行此程序? (也?)添加 webSettings 怎么样。在 Jellybean (API 16) 或更高版本上运行时 setAllowUniversalAccessFromFileURLs(true)?这有什么帮助吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多