安卓 WebView 获取本地存储值

4

我正在使用Android WebView加载一个URL,该Web应用程序使用缓存并将值存储在浏览器的应用程序 ->本地存储 -> www.123xyz.com ->评分中。

每当Web应用程序中发生活动时,它都会存储在本地存储中,这很好地工作。

现在我想检索本地存储值并将其存储在Android的SQLite数据库中。 如果Web应用程序未正确执行,则我希望从SQLite数据库中检索值并将其设置在本地存储的评分密钥中。

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.getSettings().setDatabaseEnabled(true);
    Log.e("Database",getFilesDir().getParentFile().getPath()+"/databases/");
    mWebView.getSettings().setDatabasePath(getFilesDir().getParentFile().getPath()+"/databases/");
    mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
    Log.e("Cache",getApplicationContext().getCacheDir()+"/scoring");
    mWebView.getSettings().setAppCachePath( getApplicationContext().getCacheDir()+"/scoring");
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setAppCacheEnabled(true);
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

    String url= getResources().getString(R.string.scoringurl);
    mWebView.loadUrl(url);

更新:

现在我可以通过以下代码访问localstorage并检索值。现在我想每30秒或每当localstorage发生更改时获取此值。

有没有办法这样做呢?我想必须通过计时器完成,而不会使应用程序变慢,有人可以帮忙吗。

    mWebView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            view.evaluateJavascript("javascript:window.localStorage.getItem('scoring')", new ValueCallback<String>() {
                @Override public void onReceiveValue(String s) {
                    Log.e("OnRecieve",s);
                }
            });
            super.onPageFinished(view, url);
        }
    });

定期检查更改的计时器会完成任务。对吗? - Ameena Shafeer
1个回答

1

在 Override Method onConsoleMessage 中调用它,每当您的控制台发生更改时,此方法都会被调用。

    @Override
    public void onConsoleMessage(String message, int lineNumber, String sourceID) {
        view.evaluateJavascript("javascript:window.localStorage.getItem('scoring')", new ValueCallback<String>() {
            @Override 
            public void onReceiveValue(String s) {
                Log.e("OnRecieve",s);
            }
        });
        super.super.onConsoleMessage(message, lineNumber, sourceID);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接