Android Studio WebView中Local Storage无法读取的问题及解决
Android WebView中LocalStorage的可用性与配置方案
可用性说明
Android WebView完全支持LocalStorage,你遇到的无法读取存储值问题,核心原因是未启用DOM存储配置——默认情况下WebView的DOM存储功能是关闭的,导致JavaScript无法读写LocalStorage。
必要配置修改
你需要在WebSettings中补充以下关键配置:
- 启用DOM存储
LocalStorage属于DOM存储范畴,必须显式开启才能使用:
webSettings.setDomStorageEnabled(true);
- 设置存储路径(可选但推荐)
虽然API 19及以上版本WebView会自动管理存储路径,但为了兼容低版本设备,建议手动指定存储目录:
// API 19及以上已标记过时,但不影响功能运行 webSettings.setDatabasePath(getApplicationContext().getFilesDir().getPath());
- 确认JavaScript已启用
你已经开启了JavaScript,这是运行LocalStorage相关代码的前提,无需修改:
webSettings.setJavaScriptEnabled(true);
修改后的完整初始化代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.webView = findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); // 新增DOM存储启用配置 webSettings.setDomStorageEnabled(true); // 兼容低版本的存储路径设置 webSettings.setDatabasePath(getApplicationContext().getFilesDir().getPath()); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("url for redirection"); }
额外注意事项
- 同源策略限制:确保短信认证页面与WebView加载的页面属于同一域名,LocalStorage遵循同源策略,跨域名无法读取彼此的存储值。
- 数据持久化:配置正确后,LocalStorage的数据会持久保存在设备中,除非用户手动清除应用数据或通过JavaScript代码主动删除。
内容的提问来源于stack exchange,提问作者Sai Chaitanya
相关产品推荐
相关产品推荐

