You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:35:04