1

I'm making this android app where you user must login to enter the app, I'm connecting my app to the database via web-services I created the login page successfully, however, my question is, how can the user move into the second page with the same session ID and how can the system retrieve the user details who logged in in other pages Thats my login.java code

import android.R.string;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.ksoap2.transport.HttpsTransportSE;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;

public class Login extends ActionBarActivity   {

    private static final String NAMESPACE = "***"; //WHAT IS A NAMESPACE
    private static final String URL = "***"; //removed HTTPS because I'm making a https call below
    private static final String METHOD_NAME = "login";
    private static final String SOAP_ACTION =  NAMESPACE + "/" + METHOD_NAME; //in wsdl it's nothing

    EditText usersusername, userspassword;
    Button LB;

    @Override 
    protected void onCreate(Bundle savedInstanceState) { // WHAT DOES PROTECTED VOID MEAN? CAN YOU RENAME ANYTHING
        //SUCH AS SAVEDINSTANCESTATE OR IS IT ALWAYS LIKE THAT? 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login); //CAN YOU HAVE TWO ACTIVITIES TO ONE LAYOUT?
       usersusername = (EditText)findViewById(R.id.editusername);
       userspassword = (EditText)findViewById(R.id.editusername);
       LB = (Button) findViewById(R.id.loginbutton);
       LB.setOnClickListener(new View.OnClickListener() {

      public void onClick(View arg0) {
      loginAction();

      }
     });




    }


    private void loginAction(){
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            usersusername = (EditText)findViewById(R.id.editusername);
            userspassword = (EditText)findViewById(R.id.editusername);
            String user_Name = usersusername.getText().toString();
            String user_Password = userspassword.getText().toString();

          //Pass value for userName variable of the web service
            PropertyInfo unameProp =new PropertyInfo();
            unameProp.setName("userName");//Define the variable name in the web service method
            unameProp.setValue(user_Name);//set value for userName variable
            unameProp.setType(String.class);//Define the type of the variable
            request.addProperty(unameProp);//Pass properties to the variable

          //Pass value for Password variable of the web service
            PropertyInfo passwordProp =new PropertyInfo();
            passwordProp.setName("password");
            passwordProp.setValue(user_Password);
            passwordProp.setType(String.class);
            request.addProperty(passwordProp);


           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // Declare the version of the soap request
           envelope.setOutputSoapObject(request);
           HttpTransportSE aht = new HttpTransportSE(URL);

           try {

                //URL = www.servicedeskattach.datacom.co.nz/axis/services/USD_R11_WebService?wsdl


                aht.call(SOAP_ACTION, envelope);  //this is the actual part that calls the web service
                String requestDumpString = aht.requestDump;
                String responseDumpString = aht.responseDump;




          //Get the soapresult from the envelope body
         //     SoapObject result = (SoapObject)envelope.bodyIn;
                SoapPrimitive response =(SoapPrimitive)envelope.getResponse();
                String status = response.toString(); // Result string
                TextView result = (TextView) findViewById(R.id.tv_status);
                   result.setText(response.toString());

                   if(status.equals("Success!"))
                    {
                       Intent intent = new Intent(Login.this,Dashboard.class);
                       intent.putExtra("username",usersusername.getText().toString());
                       startActivity(intent);


                    }
                   else
                    {
                       Intent i = new Intent(getApplicationContext(), Login.class);
                       startActivity(i);
                    }



           }
           catch (Exception e){

           }






        } 


    } 
Mash
  • 174
  • 1
  • 1
  • 12

1 Answers1

0

This is a great example of persisting data across activities. To do this, the most common example is to use "Preferences" files. If you don't want the data to persist very long you either control it server-side (expire a cookie or session ID):

How do I get the SharedPreferences from a PreferenceActivity in Android?

Passing the data using intents is not bad, but if a phone call comes in and the app moves to the background, Android may kill and then restart your app causing a loss of data. That may sound "secure" but the situation could also be that the phone simply rings or the user responds to a text message, and if this happens often, your user may be irritated.

A database is typically overkill, unless you already have one along with a USER object, etc.

Community
  • 1
  • 1
Jim
  • 10,172
  • 1
  • 27
  • 36