2017-09-19 46 views
-2

1.Webview有一個goback方法,它可以在點擊後保存web狀態。如何在webview中重新加載url時保存上次狀態

2.我的佈局是一個LinearLayout,它有一個webview在兩個按鈕之上。

  1. 每個按鈕都匹配一個url。此外,我在onKeyDown方法

  2. 第一URL中有一個表單中添加webView.goBack(),第二沒有一個形式

我在第一個URL的形式寫了一些信息,我點擊第二個按鈕後, 然後,我點擊第一個按鈕,但url是reload.but如果當我點擊返回 表單信息是保存。 我想保存這些表單信息,當我點擊返回按鈕時,它可以保存上次表單信息

我想在上次保存表單信息,該怎麼做?

我的代碼是在這裏

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


} 
+1

你已經問過這個問題。在創建一個新問題之前,請回答那裏的問題。 https://stackoverflow.com/questions/46290821/how-to-save-forms-info-last-time-in-webview – Steven

回答

0

您可以設置:

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

而且保存在指定的應用程序緩存路徑:

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

而且告訴我結果。

+0

沒有效果,我認爲代碼有一些問題,我的代碼在回答 – user7148732

相關問題