Android: Keep username in session until logout

后端 未结 4 1545
感动是毒
感动是毒 2020-12-08 09:04

I\'m having hard time trying to figure out how to use SharedPreferences to store the username in the phone and stay in session until logout. I also need to know how at the s

相关标签:
4条回答
  • 2020-12-08 09:13

    When the user logs in successfully, add the user's username to the SharedPreference for your application.

    SharedPreferences settings = getSharedPreferences("MyPrefsFile", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("username", username);
    

    Every time the user opens the app, check to see if the "userID" preference is set. If it is then he is logged in. otherwise show the Login screen. When the user logs out, delete the "username" entry from the shared prefs.

    I also need to know how at the same time its in session it will send the username out with the data the user click on within the listview

    You will have access to the user's ID through that shared pref so you are able to use it whenever you need it. The Android framework does not do that for you but it's a simple task for you to do.

    0 讨论(0)
  • 2020-12-08 09:20

    I think this example should be very helpful.

    http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/

    The main class is here:

    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
        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, LoginActivity.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, LoginActivity.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);
        }
    }
    
    0 讨论(0)
  • 2020-12-08 09:35

    To add the user just do:

    import android.preference.PreferenceManager;
    ....
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("username", username);
    

    And to delete it, in Logout:

    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = settings.edit();
    editor.remove("username");
    

    This way you make sure that the user only lasts for one session, until it logs out. You should make a check (just in case), when you open your app, to see if there is an username already set from a previous session if something wrong happened.

    And as for passing the data in a ListView, you have to do it by hand. SharedPreference framework takes care of everything else.

    0 讨论(0)
  • 2020-12-08 09:40

    for storing in stored preferences use this

     SharedPreferences.Editor editor = getSharedPreferences("DeviceToken",MODE_PRIVATE).edit();
                            editor.putString("DeviceToken","ABABABABABABABB12345");
    editor.apply();
    

    for retrieving the same use

        SharedPreferences prefs = getSharedPreferences("DeviceToken", 
     MODE_PRIVATE);
        String deviceToken = prefs.getString("DeviceToken", null);
    
    0 讨论(0)
提交回复
热议问题