我有一个html5应用程序,我用WebView包装。为了存储和检索页面之间的用户输入值,我使用了localDirectory html5功能。localStorage html5功能不能在三星Android设备上的WebView工作
它适用于我的Nexus 4(Android 4.4.4),但它不适用于Samsung Galaxy Tab 2(Android 4.3.x)(=没有任何反应,但在logcat中也没有错误)。 或者,更清楚的是:在Samsung上的,如果html页面从应用程序的资产文件夹中加载,则不起作用。如果我把这些页面放在服务器上,它可以工作,如下面的注释行。
但是,在Nexus 4上,从file:/// android_asset /加载,以及如果我从file://路径加载桌面浏览器(Chrome,Firefox)上的页面,它也可以工作。
更新1:我刚刚有另一位用LG设备报告问题的用户,所以它似乎不是三星特定的。
更新2:从localStorage存储和加载值可以在同一页面上的所有设备上正常工作,但不在不同页面之间。在我的示例中,我可以存储和检索01_home.html上的值,但是当我转到android_asset文件夹中的另一页时,我无法再阅读它(在LG,三星设备上)。虽然在Nexus 4上运行良好。
以下是Web视图的设置。
webView = (WebView)this.findViewById(R.id.webView);
webViewClient = new MyWebViewClient(this);
webViewClient.setSm(sm);
webView.setWebViewClient(webViewClient);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setSupportZoom(false);
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.loadUrl("file:///android_asset/01_home.html"); // does NOT work!
// webView.loadUrl("http://192.168.178.33/01_home.html"); // does work!
本地存储代码的网页:
// storing
var data = document.getElementById('data').value;
window.localStorage.setItem((1), data);
// reading
document.getElementById('data').value = window.localStorage.getItem(1);
主题的Android开发者名单:https://groups.google.com/forum/#!topic/ android-developers/gssOdQLROAY – 2014-09-30 09:56:42