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.