How to delete shared preferences data from App in Android

AndroidSharedpreferences

Android Problem Overview


How do I delete SharedPreferences data for my application?

I'm creating an application that uses a lot of web services to sync data. For testing purposes, I need to wipe out some SharedPreferences values when I restart the app.

Android Solutions


Solution 1 - Android

To remove specific values: SharedPreferences.Editor.remove() followed by a commit()

To remove them all SharedPreferences.Editor.clear() followed by a commit()

If you don't care about the return value and you're using this from your application's main thread, consider using apply() instead.

Solution 2 - Android

My solution:

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();

Solution 3 - Android

Removing all preferences:

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();

Removing single preference:

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();

Solution 4 - Android

If it's not necessary to be removed every time, you can remove it manually from:

> Settings -> Applications -> Manage applications -> (choose your app) > -> Clear data or Uninstall

Newer versions of Android:

> Settings -> Applications -> (choose your app) -> Storage -> Clear data > and Clear cache

Solution 5 - Android

Deleting Android Shared Preferences in one line :-)

context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();

Or apply for non-blocking asynchronous operation:

this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();

Solution 6 - Android

Seems that all solution is not completely working or out-dead

to clear all SharedPreferences in an Activity

PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();

Call this from the Main Activity after onCreate

note* i used .apply() instead of .commit(), you are free to choose commit();

Solution 7 - Android

As of API 24 (Nougat) you can just do:

context.deleteSharedPreferences("YOUR_PREFS");

However, there is no backward compatibility, so if you're supporting anything less than 24, stick with:

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 

Solution 8 - Android

In the class definitions:

private static final String PREFERENCES = "shared_prefs";

private static final SharedPreferences sharedPreferences  = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);

Inside the class:

public static void deleteAllSharedPrefs(){
    sharedPreferences.edit().clear().commit();
}

Solution 9 - Android

You can use the adb shell to do this even without a rooted phone. The only catch is that the app must be debuggable.

run-as <your package name> <command>

For example:

run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db

Alternatively, you can just do the above but without the command which will direct you to the app package root and allow you to execute more commands in the app's context.

Solution 10 - Android

Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();

Solution 11 - Android

You can also just manually uninstall your app using your device. Then when you re-install your app, shared preferences have been reset.

Solution 12 - Android

Clear them all:

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()

Solution 13 - Android

Try this code:

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();

Solution 14 - Android

You can always do it programmatically as suggested by the other answers over here. But for development purpose, I find this Plugin very helpful as it speeds up my development significantly.

PLUGIN: ADB Idea

It provides you with features to Clear App Data and Revoke Permission from your Android Studio itself, just with click of a button.

enter image description here

Solution 15 - Android

If it is for your testing. You can use adb commands.

adb shell pm clear <package name>

Solution 16 - Android

String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();

This will delete the saved shared preferences with the name "someTag".

Solution 17 - Android

To clear all SharedPreferences centrally from any class:

public static SharedPreferences.Editor getEditor(Context context) {
    return getPreferences(context).edit();
}

And then from any class: (commit returns a Boolean where you can check whether your Preferences cleared or not)

Navigation.getEditor(this).clear().commit();

Or you can use apply; it returns void

Navigation.getEditor(this).clear().apply();

Solution 18 - Android

To remove the key-value pairs from preference, you can easily do the following

getActivity().getSharedPreference().edit().remove("key").apply();

I have also developed a library for easy manipulation of shared preferences. You may find the following link

https://github.com/farruhha/SimplePrefs

Solution 19 - Android

For Kotlin users it is fairly easy:

val sharedPref = context.getSharedPreferences("myPref", Context.MODE_PRIVATE)
 sharedPref.edit().clear().apply()

Solution 20 - Android

  • To remove a particular value,

SharedPreferences.Editor remove(String key) followed by a commit() or a apply()

  • To remove all the values,

SharedPreferences.Editor clear() followed by a commit() or a apply()

Solution 21 - Android

None of the answers work for me since I have many shared preferences keys.

Let's say you are running an Android Test instead of a unit test.

It is working for me loop and delete through all the shared_prefs files.

> @BeforeClass will run before all the tests and ActivityTestRule

@BeforeClass
public static void setUp() {
    Context context = InstrumentationRegistry.getTargetContext();

    File root = context.getFilesDir().getParentFile();
    String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
    for (String fileName : sharedPreferencesFileNames) {
        context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
    }
}

Solution 22 - Android

The Kotlin ktx way to clear all preferences:

val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
	clear()
}

Click here for all Shared preferences operations with examples

Solution 23 - Android

new File(context.getFilesDir(), fileName).delete();

I can delete file in shared preferences with it

Solution 24 - Android

One line of code in kotlin:

getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE).edit().clear().apply()

Solution 25 - Android

My Answer:

In Java:

SharedPreferences myPrefs = context.getSharedPreferences("My_Pref", Context.MODE_PRIVATE);
myPrefs.edit().remove("my_key").apply();

In Kotlin:

val myPrefs = context.getSharedPreferences("My_Pref", Context.MODE_PRIVATE)
myPrefs.edit().remove("my_key").apply()

Solution 26 - Android

This is my Kotlin method:

      public fun clearAllSharedPrefs() {
            val sharedPreferences: SharedPreferences = MainApplication.applicationContext()
                .getSharedPreferences("MY_CUSTOME_KEY", Context.MODE_PRIVATE)
            sharedPreferences.edit().clear()
            sharedPreferences.edit().apply()
        }

Solution 27 - Android

You can use preferences.edit().remove("key").commit() to delete saved values from shared preferences.

Solution 28 - Android

Just did this this morning. From a command prompt:

adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file

NOTE: This requires a rooted device such as the stock Android virtual devices, a Genymotion device, or an actual rooted handset/tablet, etc.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndrewView Question on Stackoverflow
Solution 1 - AndroidMark BView Answer on Stackoverflow
Solution 2 - Androidvaibhav vijayView Answer on Stackoverflow
Solution 3 - Androidsz12345View Answer on Stackoverflow
Solution 4 - AndroidNobuView Answer on Stackoverflow
Solution 5 - AndroidrubdottocomView Answer on Stackoverflow
Solution 6 - AndroidShady KeshkView Answer on Stackoverflow
Solution 7 - AndroidafathmanView Answer on Stackoverflow
Solution 8 - AndroidsiviView Answer on Stackoverflow
Solution 9 - AndroidJohnson WongView Answer on Stackoverflow
Solution 10 - AndroidVaishali SutariyaView Answer on Stackoverflow
Solution 11 - AndroidwizurdView Answer on Stackoverflow
Solution 12 - AndroidDan AlboteanuView Answer on Stackoverflow
Solution 13 - AndroidMubashshirView Answer on Stackoverflow
Solution 14 - AndroidVishist VarugeeseView Answer on Stackoverflow
Solution 15 - AndroidPrakashView Answer on Stackoverflow
Solution 16 - AndroidKiran k gView Answer on Stackoverflow
Solution 17 - AndroidSufiyan AnsariView Answer on Stackoverflow
Solution 18 - AndroidFarruh HabibullaevView Answer on Stackoverflow
Solution 19 - AndroidSaurabh DhageView Answer on Stackoverflow
Solution 20 - AndroidPalak JainView Answer on Stackoverflow
Solution 21 - AndroidAllenView Answer on Stackoverflow
Solution 22 - AndroidParitoshView Answer on Stackoverflow
Solution 23 - AndroidDũng Phạm TiếnView Answer on Stackoverflow
Solution 24 - AndroidBiplob DasView Answer on Stackoverflow
Solution 25 - AndroidShashank AdhatraoView Answer on Stackoverflow
Solution 26 - AndroidMohsen EmamiView Answer on Stackoverflow
Solution 27 - AndroidAshish JaiswalView Answer on Stackoverflow
Solution 28 - AndroidkdahlhausView Answer on Stackoverflow