基于localStorage的网址收藏夹-CSDN博客
为了通过安卓菜单添加网址到主页中,调试了几个小时,主要踩了几个坑。
1.localStorage 通过域名隔离,需要加载主页才能读写。
2.WebView 可以不显示,但是 JS 代码要放在 window.onload 中等待页面加载完毕后才能执行。
3.WebView 不能(过早) destroy,不然 JS 也不执行。
WebView webView = new WebView(MainActivity.this);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl("file:///android_asset/home.htm");
String js = "javascript:window.onload=function(){var json=JSON.parse(localStorage.webfav);for(var i=0;i<json.length;i++){if(json[i].website=='" + urln + "'){alert('网址已经存在!');return;}}json.push({title: '" + ptitle + "',website:'" + urln + "'});localStorage.webfav=JSON.stringify(json);}";
webView.loadUrl(js);