使用 webview 时,Android 上的 HTML localStorage 为空
Posted
技术标签:
【中文标题】使用 webview 时,Android 上的 HTML localStorage 为空【英文标题】:HTML localStorage is null on Android when using webview 【发布时间】:2012-01-31 19:53:04 【问题描述】:我正在尝试使用本地 Web APP 中的 localstorage,这里是 WebView 初始化部分:
static class MyWebView extends WebView
public MyWebView(Context context)
super(context);
this.getSettings().setjavascriptEnabled(true);
//enable support for DOM Storage and Database
this.getSettings().setDatabaseEnabled(true);
this.getSettings().setDomStorageEnabled(true);
String databasePath = context.getDir("database", Context.MODE_PRIVATE).getPath();
this.getSettings().setDatabasePath(databasePath);
this.setVerticalScrollbarOverlay(true);
这是 JavaScript 上的测试应用:
function testStorage()
var storage = window.localStorage;
if (storage)
try
storage.setItem("name", "Hello World!"); //saves to the database, “key”, “value”
catch (e)
alert(e.message); //data wasn’t successfully saved due to quota exceed so throw an error
document.write(storage.getItem("name")); //Hello World!
storage.removeItem('name');
else
alert('Your browser does not support html5 localStorage. Because Storage is' + storage);
但问题是 localStorage 始终为空,我检查了权限并使用
创建了一个 WebChromeClient@Override
public void onExceededDatabaseQuota(String url,
String databaseIdentifier,
long currentQuota,
long estimatedSize,
long totalUsedQuota,
WebStorage.QuotaUpdater quotaUpdater)
quotaUpdater.updateQuota(estimatedSize * 2);
永远不会被调用。 有谁知道为什么?
谢谢
【问题讨论】:
您是否在 WebView 上设置了自定义 WebCromeClient? 是的,我正在使用 webView.setWebChromeClient ... android webview & localStorage的可能重复 【参考方案1】:您是否尝试过按照此答案启用设置:https://***.com/a/5934650/85472
【讨论】:
以上是关于使用 webview 时,Android 上的 HTML localStorage 为空的主要内容,如果未能解决你的问题,请参考以下文章
版本 53 但不是版本 54 上的 Android WebView SSL 错误
Android 7.0 上的 Android WebView InflateException
如何在nativescript vue中处理webview上的android后退按钮