【问题标题】:How to save last state when reload url in webview [duplicate]在webview中重新加载url时如何保存最后一个状态[重复]
【发布时间】:2017-09-19 12:53:59
【问题描述】:

1.Webview有一个goback方法,可以在点击返回时保存网页状态。

2.我的布局是一个线性布局,它在两个按钮之上有一个 webview。

  1. 每个按钮都匹配一个 url。另外我在onKeyDown方法中添加webView.goBack()

  2. 第一个url有表单,第二个没有表单

点击第二个按钮后,我在第一个 url 的表单中写了一些信息 然后,我点击第一个按钮,但网址是重新加载。但是如果我点击返回 表单信息已保存。 我想保存那些表单信息,比如点击返回按钮,它可以保存上次的表单信息

我想保存上次的表单信息,怎么做?

我的代码在这里

 private void checkone(String url) {

    if (!Netutils.isNetworkAvalible(MyApplication.mcontext)) {
        fl.removeAllViews();
        webView.loadUrl(url);
        webView.setVisibility(View.GONE);
        webView.removeAllViews();
        fl.setVisibility(View.VISIBLE);
        fl.addView(mErrorView);

    } else {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                fl.setVisibility(View.GONE);
                webView.setVisibility(View.VISIBLE);
                fl.removeAllViews();
            }
        },1000);






            Map extraHeaders = new HashMap();
            extraHeaders.put("Referer", "www.emiaoqian.com");
            webView.loadUrl(url, extraHeaders);


            settings = webView.getSettings();
            settings.setBuiltInZoomControls(true);
            settings.setUseWideViewPort(true);

            settings.setJavaScriptEnabled(true);
            settings.setSaveFormData(true);
            settings.setCacheMode(WebSettings.LOAD_DEFAULT);
            settings.setAppCachePath(MyApplication.mcontext.getCacheDir().getPath());

            webView.setWebChromeClient(new ChomeClient(this) {
                @Override
                public void onProgressChanged(WebView view, int newProgress) {


                    currentProgress = pg1.getProgress();
                    if (newProgress >= 100 && !isAnimStart) {

                        isAnimStart = true;
                        pg1.setProgress(newProgress);

                        startDismissAnimation(pg1.getProgress());
                    } else {

                        startProgressAnimation(newProgress);
                    }

                }

                @Override
                public void onReceivedTitle(WebView view, String title) {
                    super.onReceivedTitle(view, title);

                    if (title.contains("404")) {
                        showErrorPage();
                    }
                }
            });


            settings.setAllowFileAccess(true);
            settings.setAllowContentAccess(true);

            settings.setDomStorageEnabled(true);


            String ua = webView.getSettings().getUserAgentString();
            webView.getSettings().setUserAgentString(ua.replace("Android", "emiaoqian"));




            webView.setWebViewClient(new WebViewClient() {

                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    pg1.setVisibility(View.VISIBLE);
                    pg1.setAlpha(1.0f);



                }

                @Override
                public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                    handler.proceed();
                }



                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {



                    if (url.startsWith("weixin://wap/pay?")) {
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_VIEW);
                        intent.setData(Uri.parse(url));
                        //startActivityForResult(intent,233);
                        startActivity(intent);
                        return true;
                    }
                    return super.shouldOverrideUrlLoading(view, url);

                }



                @Override
                public void onPageFinished(WebView view, String url) {
                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
                        CookieSyncManager.getInstance().sync();
                    } else {
                        CookieManager.getInstance().flush();
                    }


                    if (!(url.equals(Constants.LOGIN)) && !(url.equals(Constants.LOGINOUT))) {
                        if (homeTb != null && supportActionBar != null) {
                            supportActionBar.setDisplayHomeAsUpEnabled(false);
                            supportActionBar.setDisplayShowHomeEnabled(false);
                            homeTb.setTitle("");
                        }
                        radiogroup.setVisibility(View.VISIBLE);
                        nouserl.setVisibility(View.VISIBLE);

                    } else if (url.equals(Constants.LOGIN) || url.equals(Constants.LOGINOUT)) {
                        inittoolbar2();
                        radiogroup.setVisibility(View.GONE);
                        nouserl.setVisibility(View.GONE);

                    }


                    if (url.startsWith("https://wx.tenpay.com")) {
                        String newurl = url.substring(url.length() - 12, url.length());
                        LogUtil.e("--", newurl);



                    }



                }

                @Override
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    showErrorPage();
                }

                @Override
                public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                    showErrorPage();
                }


            });

            fixDirPath();
            // webParentView = (LinearLayout) webView.getParent(); 
        }


}

【问题讨论】:

标签: android webview android-webview


【解决方案1】:

你可以设置:

mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); // WebSettings.LOAD_CACHE_ELSE_NETWORK

还要保存在指定应用缓存路径:

mWebView.getSettings().setAppCachePath(mContext.getCacheDir().getPath());

然后告诉我结果。

【讨论】:

  • 无效,我认为代码有问题,我的代码在回答
猜你喜欢
  • 1970-01-01
  • 2011-03-19
  • 2020-11-03
  • 2021-03-01
  • 1970-01-01
  • 2018-01-14
  • 2013-09-23
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多