2017-02-03 1 views
0

Я разместил веб-просмотр в своем действии.Android: сохранить данные веб-просмотра для следующего использования, например, кокетливые

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, чтобы сэкономить. или отнести его к объекту, затем сериализуйте его, поэтому, когда мне это нужно, его можно десериализовать, а затем сбрасывать в Bundle. Является ли это возможным? –

ответ

0

Если вы не хотите использовать базу данных для сохранения данных, вы можете использовать общие настройки, в которых вы сохраняете пары ключ-значение. Подробнее в documentation.

+0

Спасибо, что посмотрели ... но как я могу сохранить состояние instanse? Должен ли я сериализовать, а затем сохранить его? –

+0

Я пробовал, что он не доступен для saveInstanceState веб-просмотра –

Смежные вопросы