У меня есть простая тестовая страница html5, которая использует LocalStorage для отображения / сохранения / повторного отображения части данных.
Этот код отлично работает в Android 2.3.x, но регистрирует исключение в 4.0.1 в строке 18 HTML-кода, который является первым вызовом localStorage.getItem ()
и по адресу на этом этапе JS останавливается.
Исключение: Неперехваченная ошибка: SECURITY_ERR: Исключение DOM 18 в /data/data/my.app.name/app_htmlData:18
Я также пробовал установить путь к базе данных на getCacheDir ()
с тем же результатом.
String htmlContent = "HTML content listed below";
File sharedDir = getActivity().getDir("htmlData", Context.MODE_PRIVATE);
WebView browser = (WebView)v.findViewById(R.id.wvBrowser);
browser.setWebChromeClient(new WebChromeClient(){
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 2);
}
});
browser.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url){
view.loadUrl("javascript:doTest()");
});
browser.getSettings().setDatabaseEnabled(true);
browser.getSettings().setDatabasePath(sharedDir.getPath());
browser.getSettings().setDomStorageEnabled(true);
browser.loadDataWithBaseURL(mSharedDir.getPath(),
htmlContent,
"text/html",
"utf-8",
null);
HTML-код, отображаемый на странице, выглядит следующим образом:
Simple localStorage test
-Simple localStorage test-
Источник доступен здесь