2017-02-03 20 views
0

我在活動中放置了一個webview。Android:將webview的數據保存爲下一次使用,如coockies

webview加載TelegramWeb的頁面。

當我登錄到電報帳戶,它工作正常。

但當我旋轉屏幕或重新打開應用程序它忘記所有數據,並需要重新登錄到電報帳戶。

所以我需要保存一些數據,如coockies和其他必要的文件。

我用setJavaScriptEnabled =真和其他一些設置如下:

@SuppressLint("SetJavaScriptEnabled") public class SubActivity extends Activity { 

private WebView wv1; 

protected void onSaveInstanceState(Bundle outState) { 
     wv1.saveState(outState); 
    } 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sub); 
    Button b1=(Button) findViewById(R.id.btnSave); 

    wv1=(WebView)findViewById(R.id.webView1); 
    WebSettings ws=wv1.getSettings(); 
    ws.setAllowContentAccess(true); 
    ws.setAppCacheEnabled(true); 
    ws.setSaveFormData(true); 
     wv1.setWebViewClient(new Webview()); 
     wv1.getSettings().getCacheMode(); 
     wv1.getSettings().getAllowContentAccess(); 
     wv1.getSettings().getSaveFormData(); 
     wv1.getSettings().setLoadsImagesAutomatically(true); 
     wv1.getSettings().setJavaScriptEnabled(true); 
     wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     wv1.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     wv1.getSettings().setAllowFileAccess(true); 
     wv1.getSettings().setDomStorageEnabled(true); 
     wv1.setSaveEnabled(true); 
     if (savedInstanceState != null) 
     wv1.restoreState(savedInstanceState); 
     else 
     wv1.loadUrl("https://web.telegram.org/#/im"); 


     b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Toast.makeText(getBaseContext(), wv1.getUrl().toString(), Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

}

,但仍然需要重新登錄帳戶。

更好的瞭解SubActivity類在檢查密碼後從MainActivity啓動。

------

注:

我加入wf1.loadUrl此代碼後,它工作在屏幕上旋轉。

wv1.saveState(savedInstanceState); 

但在關閉應用程序並重新打開它時仍然不起作用。所以我必須重新登錄。 我想我必須將InstanceState保存在一些地方。 我該怎麼辦?

+0

我想我應該直接序列化捆綁保存一些地方。或者將其轉換爲對象然後序列化它,所以當我需要它時可以反序列化,然後向下轉換爲Bundle。可能嗎? –

回答

0

如果您不想使用數據庫保存數據,則可以使用「共享首選項」保存鍵值對。更多在documentation

+0

感謝您考慮...但我如何保存instanse狀態?我應該序列化然後保存它嗎? –

+0

我試過它不適用於webview的saveInstanceState –

相關問題