我在活動中放置了一個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保存在一些地方。 我該怎麼辦?
我想我應該直接序列化捆綁保存一些地方。或者將其轉換爲對象然後序列化它,所以當我需要它時可以反序列化,然後向下轉換爲Bundle。可能嗎? –