Saltar al contenido

¿Cómo mantener la sesión en android?

Al fin luego de tanto batallar ya hallamos la respuesta de este enigma que algunos de nuestros lectores de este espacio han tenido. Si quieres compartir algún detalle puedes dejar tu información.

Solución:

Haz una clase para tu SharedPreferences

public class Session 

    private SharedPreferences prefs;

    public Session(Context cntx) 
        // TODO Auto-generated constructor stub
        prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
    

    public void setusename(String usename) 
        prefs.edit().putString("usename", usename).commit();
    

    public String getusename() 
        String usename = prefs.getString("usename","");
        return usename;
    

Ahora, después de hacer esta clase cuando quieras usarla, úsala así: crea un objeto de esta clase como

private Session session;//global variable 
session = new Session(cntx); //in oncreate 
//and now we set sharedpreference then use this like

session.setusename("USERNAME");

ahora, cada vez que desee obtener el nombre de usuario, se debe realizar el mismo trabajo para el objeto de sesión y llamar a esto

session.getusename();

Haz lo mismo para la contraseña

Puedes lograr esto usando AccountManager.

Ejemplo de código

// method to add account..
private void addAccount(String username, String password) 
    AccountManager accnt_manager = AccountManager
            .get(getApplicationContext());

    Account[] accounts = accnt_manager
            .getAccountsByType(getString(R.string.account_type)); // account name identifier.

    if (accounts.length > 0) 
        return;
    

    final Account account = new Account(username,
            getString(R.string.account_type));

    accnt_manager.addAccountExplicitly(account, password, null);

    final Intent intent = new Intent();
    intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, username);
    intent.putExtra(AccountManager.KEY_PASSWORD, password);
    intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE,
            getString(R.string.account_type));
    // intent.putExtra(AccountManager.KEY_AUTH_TOKEN_LABEL,
    // PARAM_AUTHTOKEN_TYPE);
    intent.putExtra(AccountManager.KEY_AUTHTOKEN, "token");
    this.setAccountAuthenticatorResult(intent.getExtras());
    this.setResult(RESULT_OK, intent);
    this.finish();


// method to retrieve account.
private boolean validateAccount() 
    AccountManagerCallback callback = new AccountManagerCallback() 

        @Override
        public void run(AccountManagerFuture arg0) 
            Log.e("calback", "msg");

            try 
                Bundle b = arg0.getResult();
                if (b.getBoolean(AccountManager.KEY_ACCOUNT_MANAGER_RESPONSE)) 
                    //User account exists!!..
                    
             catch (OperationCanceledException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
             catch (AuthenticatorException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
             catch (IOException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            
        
    ;

    AccountManager accnt_manager = AccountManager
            .get(getApplicationContext());

    Account[] accounts = accnt_manager
            .getAccountsByType(getString(R.string.account_type));

    if (accounts.length <= 0) 
        return false;
     else 
        loginNameVal = accounts[0].name;
        loginPswdVal = accnt_manager.getPassword(accounts[0]);
        return true;
    

Puede usar un valor booleano en SharedPreferences.

Cárguelo antes de iniciar sesión para verificar si es necesario iniciar sesión.

Guárdelo después de iniciar sesión.

Si posees alguna sospecha o forma de reaccionar nuestro ensayo te sugerimos ejecutar una anotación y con gusto lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *