Android WebView获取本地存储值

时间:2019-05-07 11:36:51

标签: java android android-webview

我使用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);

更新:

现在,我可以通过下面的代码访问本地存储,并能够检索值。现在,我想每30秒或每当本地存储发生更改时都获得此值。

有没有办法做到这一点。我想这必须通过计时器来完成,并且不能使应用程序变慢,任何人都可以帮助我。

    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);
        }
    });

0 个答案:

没有答案