如何在Android Webview PWA中读/写本地和会话存储?

vhmi4jdf  于 2023-02-14  发布在  Android
关注(0)|答案(2)|浏览(150)

已询问A related question,但尚未得到答复。
我在本地和会话存储中存储了键/值对,如何在Android PWA的webview MainActivity中读取/写入/覆盖此存储?

avkwfej4

avkwfej41#

您可以使用evaluateJavasctript访问存储

myWebView.evaluateJavascript("window.localStorage.getItem('key')", value -> System.out.println(value)))
f4t66c6m

f4t66c6m2#

老问题,但几天前,我需要实现类似的东西在我的Android WebView项目。所有的信息相关的这个主题是没有用的,很难找到适当的解决方案。我希望我的答案将帮助有人谁将需要同样的事情在未来,并会找到这篇文章,因为我没有。
主要的问题是,当我尝试添加或读取会话存储时,我得到这样的错误:Uncaught SecurityError: Failed to read the 'sessionStorage' property from 'Window'.
我试过很多方法,但解决方案是在页面加载后评估javascript。为此,我需要创建一个WebViewClient类对象并覆盖onPageFinished方法。然后在初始化期间将其添加到WebView。此外,我需要为我的WebView启用JavaScriptDomStorageMainActivity中完整的onCreate方法如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    //some stuff...

    WebViewClient viewClient = new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            view.evaluateJavascript("sessionStorage.setItem(\"foo\", \"bar\");", null);
        }
    };

    WebView webView = findViewById(R.id.web);
    webView.setWebViewClient(viewClient);

    WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setDomStorageEnabled(true);

    //some stuff..

    webView.loadUrl(<your_url>);
}

相关问题