使用 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后退按钮

appium怎么寻找android webview上的元素

Android 电视上的 Facebook/Webview 控件

如何在 Android 上的 webView 中显示 YouTube 视频