studio señal programacion pasar para móviles desarrollo curso aumentar aplicaciones aplicacion android autologin

señal - ¿Cómo mantener las aplicaciones de android siempre registradas en estado?



programacion android pdf 2018 (7)

En este momento estoy tratando de crear una aplicación para Android, asumiendo que va a ser un concepto "X" bien. Así que estoy creando una pantalla de inicio de sesión. Lo que quiero hacer es de inmediato si inicio sesión en esa aplicación en mi móvil, siempre debería iniciar sesión cada vez que intento acceder a esa aplicación.

Por ejemplo, nuestro Facebook, g-mail y yahoo etc. en nuestros teléfonos móviles.

¿Qué hacer para eso?


El uso de SharedPreferences es una forma de guardar y recuperar datos de par clave-valor en Android y también de mantener la sesión en toda la aplicación.

Para trabajar con SharedPreferences necesitas seguir los siguientes pasos:

  1. Inicialización de la interfaz de SharedPreferences compartida al pasar dos argumentos al constructor (String y entero)

    // Sharedpref file name private static final String PREF_NAME = "PreName"; // Shared pref mode int PRIVATE_MODE = 0;

    // Inicializando las SharedPreferences SharedPreferences pref = getApplicationContext (). GetSharedPreferences ("MyPref", 0); // 0 - para el modo privado

  2. Uso de la interfaz del editor y sus métodos para modificar los valores de SharedPreferences y para almacenar datos para su futura recuperación

    //Initialising the Editor Editor editor = pref.edit(); editor.putBoolean("key_name", true); // Storing boolean - true/false

    editor.putString ("key_name", "string value"); // Almacenamiento de cadena editor.putInt ("key_name", "int value"); // Almacenando entero editor.putFloat ("key_name", "float value"); // Almacenando float editor.putLong ("key_name", "long value"); // Almacenar largo

    editor.commit (); // Cometer cambios

  3. Recuperando datos

Los datos se pueden recuperar de las preferencias guardadas llamando al método getString () (para cadena). Recuerde que este método debe llamarse en Preferencias compartidas y no en Editor.

// returns stored preference value // If value is not present return second param value - In this case null pref.getString("key_name", null); // getting String pref.getInt("key_name", null); // getting Integer pref.getFloat("key_name", null); // getting Float pref.getLong("key_name", null); // getting Long pref.getBoolean("key_name", null); // getting boolean

  1. Finalmente, borrando / borrando datos como en el caso de cierre de sesión

Si desea eliminar de las preferencias compartidas, puede llamar a eliminar ("key_name") para eliminar ese valor en particular. Si desea borrar todos los datos, llame a clear ()

editor.remove("name"); // will delete key name editor.remove("email"); // will delete key email editor.commit(); // commit changes Following will clear all the data from shared preferences editor.clear(); editor.commit(); // commit changes

Siga el enlace a continuación para descargar un ejemplo simple y directo: http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/

Espero no haber ido en contra de las reglas y regulaciones de la plataforma para compartir este enlace.

//This is my SharedPreferences Class import java.util.HashMap; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; public class SessionManager { // Shared Preferences SharedPreferences pref; // Editor for Shared preferences Editor editor; // Context Context _context; // Shared pref mode int PRIVATE_MODE = 0; // Sharedpref file name private static final String PREF_NAME = "AndroidHivePref"; // All Shared Preferences Keys private static final String IS_LOGIN = "IsLoggedIn"; // User name (make variable public to access from outside) public static final String KEY_NAME = "name"; // Email address (make variable public to access from outside) public static final String KEY_EMAIL = "email"; // Constructor @SuppressLint("CommitPrefEdits") public SessionManager(Context context) { this._context = context; pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); editor = pref.edit(); } /** * Create login session */ public void createLoginSession(String name, String email) { // Storing login value as TRUE editor.putBoolean(IS_LOGIN, true); // Storing name in pref editor.putString(KEY_NAME, name); // Storing email in pref editor.putString(KEY_EMAIL, email); // commit changes editor.commit(); } /** * Check login method wil check user login status If false it will redirect * user to login page Else won''t do anything */ public void checkLogin() { // Check login status if (!this.isLoggedIn()) { // user is not logged in redirect him to Login Activity Intent i = new Intent(_context, MainActivity.class); // Closing all the Activities i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Add new Flag to start new Activity i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Staring Login Activity _context.startActivity(i); } } /** * Get stored session data */ public HashMap<String, String> getUserDetails() { HashMap<String, String> user = new HashMap<String, String>(); // user name user.put(KEY_NAME, pref.getString(KEY_NAME, null)); // user email id user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null)); // return user return user; } /** * Clear session details */ public void logoutUser() { // Clearing all data from Shared Preferences editor.clear(); editor.commit(); // After logout redirect user to Loing Activity Intent i = new Intent(_context, MainActivity.class); // Closing all the Activities i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Add new Flag to start new Activity i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Staring Login Activity _context.startActivity(i); } /** * Quick check for login **/ // Get Login State public boolean isLoggedIn() { return pref.getBoolean(IS_LOGIN, false); } } Finally, you will have to create an instance of this SessionManager class in the onCreate method of your activity class and then call the createLoginSession for the session that will be used throughout the entire session // Session Manager Class SessionManager session; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Session Manager session = new SessionManager(getApplicationContext()); session.createLoginSession("Username", intentValue); }

Espero que ayude.


En primer lugar, después de iniciar sesión correctamente, guarde el nombre de usuario / correo electrónico y la contraseña en SharedPreferences .

Siempre que se inicie la aplicación, ejecute el código que recuperará el nombre de usuario y la contraseña de SharedPrefernces y luego estos dos valores se pueden pasar como un parámetro a un método que autentificará al usuario.


Puede agregar lo siguiente para la operación de cierre de sesión en su SaveSharedPreference.java:

public static void clearUserName(Context ctx) { Editor editor = getSharedPreferences(ctx).edit(); editor.clear(); //clear all stored data editor.commit(); }


Siempre y cuando sea ... así que esto parece un enfoque de inicio de sesión automático. La aplicación se inicia, el usuario no tiene que iniciar sesión nuevamente una vez que haya proporcionado su información de autorización. Hay varias maneras de lograr esto. La API de Facebook, por ejemplo, proporciona un mecanismo para iniciar sesión sin el uso de un elemento de formulario. Básicamente, tendrá que construir una vista en la que el usuario pueda proporcionar su información de autorización una vez, almacenarla en SharedPreferences e iniciar sesión automáticamente la próxima vez. Incluso si no existe dicho inicio de sesión basado en API y tiene que usar un formulario de inicio de sesión, a veces podría simular la solicitud POST de inicio de sesión. Esto depende de la implementación real del lado del servidor de ese formulario. Pero recuerda: este es un problema de seguridad. Por lo tanto, nunca almacene las credenciales de autorización en formato de texto claro. No confíe en cifrarlo mediante una clave definida en su aplicación, ya que esta clave puede detectarse mediante ingeniería inversa en su APK. En su lugar, use muchas informaciones colectivas sobre el dispositivo y una clave que el usuario debe ingresar o que la aplicación genere y almacene al azar.


Utilice la preferencia compartida para la funcionalidad de inicio de sesión automático. Cuando los usuarios inician sesión en su aplicación, almacene el estado de inicio de sesión en sharedPreference y borre sharedPreference cuando los usuarios cierren la sesión.

Verifique cada vez que el usuario ingrese a la aplicación si el estado del usuario de Preferencia compartida es verdadero, entonces no es necesario iniciar sesión nuevamente, de lo contrario, diríjase directamente a la página de inicio de sesión.

Para lograr esto, primero cree una clase, en esta clase necesita escribir toda la función con respecto a la obtención y el valor establecido en la referencia compartida. Por favor mira esto debajo del Código.

public class SaveSharedPreference { static final String PREF_USER_NAME= "username"; static SharedPreferences getSharedPreferences(Context ctx) { return PreferenceManager.getDefaultSharedPreferences(ctx); } public static void setUserName(Context ctx, String userName) { Editor editor = getSharedPreferences(ctx).edit(); editor.putString(PREF_USER_NAME, userName); editor.commit(); } public static String getUserName(Context ctx) { return getSharedPreferences(ctx).getString(PREF_USER_NAME, ""); } }

Ahora en la actividad principal (la "Actividad" donde los usuarios serán redirigidos cuando inicien sesión) primero verifique

if(SaveSharedPreference.getUserName(MainActivity.this).length() == 0) { // call Login Activity } else { // Stay at the current activity. }

En la actividad de inicio de sesión si el inicio de sesión del usuario es exitoso, establezca UserName usando la función setUserName ().


después de iniciar sesión cuando se presiona back call moveTaskToBack(true);

a partir de esto su aplicación estará en estado de fondo. espero ayuda


Xamarin.Android de Xamarin.Android de Chirag Raval y LINTUism :

public class SharedPreference { static ISharedPreferences get(Context ctx) { return PreferenceManager.GetDefaultSharedPreferences(ctx); } public static void SetUsername(Context ctx, string username) { var editor = get(ctx).Edit(); editor.PutString("USERNAME", username); editor.Commit(); } public static string GetUsername(Context ctx) { return get(ctx).GetString("USERNAME", ""); } public static void Clear(Context ctx) { var editor = get(ctx).Edit(); editor.Clear(); editor.Commit(); } }