title: Android WebView Tab Browsing with Cookies
body: <p>My app has a 3-tabbed ActionBar layout. The 3 tabs are <em>Dashboard</em>, <em>Feed</em> and <em>Messages</em>.</p>
  
  <p>When you click any of the three, the application is supposed to create a WebView of www.flyalaskava.org/incog/mobile/ which - if you do not have an active session for - will display an image and a "log-in with facebook" button.</p>
  
  <p>The problem is, when I load the first tab (<em>Dashboard</em>) and cliek Log-In with Facebook, it logs me in - but as soon as I click onto another tab, I lose my session and am re-prompted.</p>
  
  <p>Please keep in mind that currently all of these are using the same <em>php</em> file and that the log-in system works perfectly outside of Android. Sorry if this is a newbie question - any help is appreciated.</p>
  
  <pre><code>package com.example.testing;
  
  import android.app.ActionBar;
  import android.app.FragmentTransaction;
  import android.os.Bundle;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentActivity;
  import android.support.v4.app.NavUtils;
  import android.view.Gravity;
  import android.view.LayoutInflater;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.TextView;
  import android.webkit.WebView;
  import android.webkit.WebViewClient;
  import android.net.ConnectivityManager;
  import android.net.NetworkInfo;
  import android.app.AlertDialog;
  import android.app.Dialog;
  import android.content.DialogInterface;
  
  import com.handmark.pulltorefresh.library.PullToRefreshWebView;
  
  public class Main extends FragmentActivity implements ActionBar.TabListener {
  
      PullToRefreshWebView mPullRefreshWebView;
      WebView mWebView;
  
      /**
       * The serialization (saved instance state) Bundle key representing the
       * current tab position.
       */
      private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          mPullRefreshWebView = (PullToRefreshWebView) findViewById(R.id.pull_refresh_webview);
          mWebView = mPullRefreshWebView.getRefreshableView();
  
          mWebView.getSettings().setJavaScriptEnabled(true);
          mWebView.setWebViewClient(new SampleWebViewClient());
          mWebView.loadUrl("http://www.google.com");
  
          // Set up the action bar to show tabs.
          final ActionBar actionBar = getActionBar();
          actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  
          // For each of the sections in the app, add a tab to the action bar.
          actionBar.addTab(actionBar.newTab().setText(R.string.title_section1)
              .setTabListener(this));
          actionBar.addTab(actionBar.newTab().setText(R.string.title_section2)
              .setTabListener(this));
          actionBar.addTab(actionBar.newTab().setText(R.string.title_section3)
              .setTabListener(this));
      }
  
      private static class SampleWebViewClient extends WebViewClient {
          @Override
          public boolean shouldOverrideUrlLoading(WebView view, String url) {
              view.loadUrl(url);
              return true;
          }
      }
  
      @Override
      public void onRestoreInstanceState(Bundle savedInstanceState) {
          // Restore the previously serialized current tab position.
          if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
              getActionBar().setSelectedNavigationItem(
                  savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM)
              );
          }
      }
  
      @Override
      public void onSaveInstanceState(Bundle outState) {
          // Serialize the current tab position.
          outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
              .getSelectedNavigationIndex());
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.activity_main, menu);
          return true;
      }
  
      public boolean onOptionsItemSelected(MenuItem item) {
          switch (item.getItemId()) {
              case R.id.menu_settings:
                  displayAlert();
                  break;
              case R.id.menu_exit:
                  displayExit();
                  break;
              default:; 
          }
          return(super.onOptionsItemSelected(item));
      }
  
      public  void displayAlert() {
          new AlertDialog.Builder(this)
              .setMessage("This Application was created by Grant Adkins")
              .setTitle("About")  
              .setCancelable(false)  
              .setNeutralButton(android.R.string.ok,  
                  new DialogInterface.OnClickListener() {  
                      public void onClick(DialogInterface dialog, int whichButton){
                          dialog.cancel();
                      }  
                  }
              )  
              .show(); 
      }
  
      public  void displayExit() {
          new AlertDialog.Builder(this).setMessage("Exit the application")  
              .setTitle("Are you sure?")  
              .setCancelable(false)  
              .setNeutralButton(android.R.string.no,  
                  new DialogInterface.OnClickListener() {  
                      public void onClick(DialogInterface dialog, int whichButton){
                          dialog.cancel();
                      }  
                  }).setPositiveButton(android.R.string.yes,  
                      new DialogInterface.OnClickListener() {  
                          public void onClick(DialogInterface dialog, int whichButton){
                              finish();
                          }  
                      }
                  ) 
              .show(); 
      }
      public boolean isOnline() {
          ConnectivityManager cm = 
              (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
          NetworkInfo netInfo = cm.getActiveNetworkInfo();
          if (netInfo != null &amp;&amp; netInfo.isConnectedOrConnecting()) {
              return true;
          }
          String summary = "&lt;html&gt;&lt;body&gt;No Network Connection.&lt;/body&gt;&lt;/html&gt;";
          mWebView.loadData(summary, "text/html", null);
          return false;
      }
  
      @Override
      public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
          // When the given tab is selected, show the tab contents in the
          // container view
          int page = tab.getPosition() + 1;
          if(page == 1) {
              /// eventually is going to load index.php?content=dashboard
              mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
              isOnline();
          } else if (page == 2) {
              /// eventually is going to load index.php?content=messages
              mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
              isOnline();
          } else if (page == 3) {
              /// eventually is going to load index.php?content=feed
              mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");
              isOnline();
          } else {
              mWebView.loadUrl("http://www.google.com");
              isOnline();
          }
      }
  
      @Override
      public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
      }
  
      @Override
      public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
      }
  
      /**
       * A dummy fragment representing a section of the app, but that simply
       * displays dummy text.
       */
      public static class DummySectionFragment extends Fragment {
          /**
           * The fragment argument representing the section number for this
           * fragment.
           */
          public static final String ARG_SECTION_NUMBER = "section_number";
  
          public DummySectionFragment() {
          }
  
          @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
              // Create a new TextView and set its text to the fragment's section
              // number argument value.
              TextView textView = new TextView(getActivity());
              textView.setGravity(Gravity.CENTER);
              textView.setText(
                  Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER))
              );
  
              return textView;
          }
      }
  }`
  </code></pre>
  
  <p><strong>*\\\\\\\\UPDATE\\\\\\*</strong></p>
  
  <p>I found this <a href="https://stackoverflow.com/questions/2566485/webview-and-cookies-on-android">article</a> which seems to be a similar problem, maybe because im using <code>mWebView.loadUrl("http://www.flyalaskava.org/incog/mobile/");</code>  it is acting like a new browser, is there any way to change urls without using that method.</p>
  
  <p><a href="http://i50.tinypic.com/2hs5ahk.png" rel="nofollow noreferrer">Here</a> is a picture of the problem.</p>