我有两个应用程序,它们都在webview中使用SQL数据库。SECURITY_ERR:DOM异常18当在WebView中打开数据库时
其中一个在我的设备上工作得很好,但另一个在尝试打开数据库时引发此错误。
未捕获的错误:SECURITY_ERR:DOM异常18
一切都在这两个项目类似,我尝试过很多事情,但没有找到原因。
我从头开始一个项目,它工作正常。
我有两个应用程序,它们都在webview中使用SQL数据库。SECURITY_ERR:DOM异常18当在WebView中打开数据库时
其中一个在我的设备上工作得很好,但另一个在尝试打开数据库时引发此错误。
未捕获的错误:SECURITY_ERR:DOM异常18
一切都在这两个项目类似,我尝试过很多事情,但没有找到原因。
我从头开始一个项目,它工作正常。
我正面临这个问题。 但我不知道我的建议将帮助你或没有
我必须创建这样一个数据库:
db = window.openDatabase("myDatabase", "1.0", "my.Database", 1024);
在Android 4.0.3没有什么问题,问题是在Android 4.1出现(SECURITY_ERR:DOM异常18)
然后我修改了数据库名称去除“宠爱”和奇怪的字符,是这样的:
db = window.openDatabase("myDatabase", "1.0", "myDatabase", 1024);
然后我的问题解决了:)
我在谷歌上搜索为这个问题的话,我现在已经解决了这个问题的解决方案:d
希望这是你的问题的解决方案(因为这个问题问 1月前)
我通过重写onExceededDatabaseQuota方法解决了“SECURITY_ERR:DOM Exception 18”。
webView = (WebView) findViewById(R.id.webView1);
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);
}
});
如果你正在使用'使用loadURL(“文件:// ... “)',那么这是让'openDatabase'在Android 4.2上运行的正确解决方案。太感谢了! – nlawson
这花了我一整天搞清楚,所以我想给有关如何在Android 4.2和4.3解决这个问题的完整文档。
您可以在WebView中使用来自file://
URL的Web SQL。科尔多瓦人民设法做到了。只是有三件事你必须做到:
1)呼叫setDatabaseEnabled()
(杜):
webView.getSettings().setDatabaseEnabled(true);
2)设置数据库文件路径。是的,这是不赞成使用的是Android 4.4,但它是需要如果你想避免在预奇巧的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将无法正常工作。你已被警告。
解决了我的问题。我正在开发onExceededDatabaseQuota代码;现在我已经添加了它,我的问题似乎已消失。谢谢。 –
这绝对是<4.3 Android设备的答案。我有一个Sencha Touch应用程序包装在原生Android应用程序中,并在webview中运行。我发布了一个实现WebSql的更新,我的一些用旧设备的用户只有一个空白的屏幕。添加onExceedDatabaseQuota后,一切似乎都正常工作。谢谢@nlawson! – i2097i
http://stackoverflow.com/questions/8390985/android-4-0-1-breaks-webview-html-5-local-storage – konmik