Logout clear SharedPreferences
Asked Answered
N

8

27

I have a login page that saves username and password to SharedPreferences. I have another Activity class that includes a logout button. I want to clear SharedPreferences when I click the logout button. The problem is that I don't get the SharedPreferences from this class. How can I get the SharedPreferences?

LoginPage

public class MainActivity extends Activity {
public SharedPreferences.Editor loginPrefsEditor;
    public  SharedPreferences loginPreferences;
    private Boolean saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    name = (EditText) findViewById(R.id.et_Username);
        pass = (EditText) findViewById(R.id.et_Password);
        login = (Button) findViewById(R.id.bt_Login);

         loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
         loginPrefsEditor = loginPreferences.edit();

         saveLogin = loginPreferences.getBoolean("saveLogin", false);

         if (saveLogin == true) {
                name.setText(loginPreferences.getString("username", ""));
                pass.setText(loginPreferences.getString("password", ""));   
            }

        login.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v) {
                 name1 = name.getText().toString();
                 pass1 = pass.getText().toString();
               //new Thread (new Task()).start();
                    loginPrefsEditor.putBoolean("saveLogin", true);
                    loginPrefsEditor.putString("username", name1);
                    loginPrefsEditor.putString("password", pass1);
                    loginPrefsEditor.commit();
                 new myAsyncTask().execute();
            }
        });
}

Logout Button in AnotherActivity

 logout.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Launching News Feed Screen

                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);
            }
        });
Nonsense answered 11/6, 2014 at 13:4 Comment(4)
If you want to clear the preferences on log out, why do you store them on log in?Tejeda
post ur code i'll give u solution within a 5 minites..Failure
i suggest you to check you code when you save or retrieve using shared preferences, because shared preferences are accessible in all the activities.Selfsacrifice
SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.clear(); editor.commit(); paste this code in logout onclicklistenerFailure
D
67

Try this !

logout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching News Feed Screen

             SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = preferences.edit();
             editor.clear();
             editor.apply();
             finish();
 });
Dupondius answered 11/6, 2014 at 13:15 Comment(1)
Any idea of how to do similar for DataStore Preferences ?Laster
H
4

I think you have a trouble in understanding Shared preferences in android .

According to official documentation

To get a SharedPreferences object for your application, use one of two methods:

getSharedPreferences() - Use this if you need multiple preferences files identified by name, which you specify with the first parameter.

getPreferences() - Use this if you need only one preferences file for your Activity. Because this will be the only preferences file for your Activity, you don't supply a name.

You should have a Context for using both the above methods .

Also Shared preferences are stored asa key value pair , so clearing should mean that you set the values to some empty string.

For more details , and better explanation you can read here http://developer.android.com/guide/topics/data/data-storage.html#pref and http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html

Hope this will help.

Cheers!

Honea answered 11/6, 2014 at 13:16 Comment(0)
I
3

It as Simple. Like you save your data in SharedPrefernce

SharedPreferences sp = getSharedPreferences("MYKEY",0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username" , username);
editor.putString("password" , password);

Now you can retrieve as in any class of your app like,

SharedPreferences sp = getSharedPreferences("MYKEY",0);
String uname = sp.getString("username");
String pwd = sp.getString("password");

And for clear your username and password

editor.clear();
editor.commit();

or

editor.remove("username");
editor.remove("password");
editor.commit();
Interloper answered 11/6, 2014 at 13:11 Comment(0)
T
0

Why not write a SharedPreference utility class. This can be accessed from both the activities.

Teocalli answered 11/6, 2014 at 13:7 Comment(1)
I didn't give the downvote but likely it's because your answer isn't descriptive at all. Provide more details about what your "SharedPreference utility class" is and how it works. Maybe give some code.Arginine
W
0
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();
Wenz answered 8/7, 2016 at 11:55 Comment(0)
I
0

In Kotlin you can use this code to clear the sharedpreference data

private val sharedPref = "sharedpreference"

val sharedPreferences: SharedPreferences = context.getSharedPreferences(sharedPref, Context.MODE_PRIVATE)
            val editor = sharedPreferences.edit()
            editor.clear()
            editor.apply()
Infrastructure answered 29/11, 2020 at 13:41 Comment(0)
V
0
SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = preferences.edit();
             editor.clear();
             editor.apply();
             finish();
Vogt answered 28/7, 2021 at 11:33 Comment(0)
S
0

For Kotlin :

fun clearall(context:Context){
      val  sp :SharedPreferences = context.getSharedPreferences(APP_PREF, Context.MODE_PRIVATE)
        val editor=sp.edit()
        editor.clear()
        editor.apply()
        editor.commit()
    }

This work for me

Scribble answered 11/7, 2023 at 15:9 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.