web-dev-qa-db-fra.com

Suppression de préférences partagées

Comment supprimer les données SharedPreferences pour mon application?

Je crée une application qui utilise beaucoup de services Web pour synchroniser les données. À des fins de test, je dois supprimer certaines valeurs SharedPreferences lorsque je redémarre l'application.

410
Andrew

Pour supprimer des valeurs spécifiques: SharedPreferences.Editor.remove () suivi d'un commit()

Pour les supprimer tous, SharedPreferences.Editor.clear() suivi d'un commit()

Si la valeur de retour ne vous intéresse pas et que vous l'utilisez à partir du thread principal de votre application, envisagez plutôt d'utiliser apply().

776
Mark B

Ma solution:

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

Supprimer toutes les préférences:

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

Supprimer la préférence unique:

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

S'il n'est pas nécessaire de le supprimer à chaque fois, vous pouvez le supprimer manuellement de:

Paramètres -> Applications -> Gérer les applications -> (choisissez votre application) -> Effacer les données ou désinstaller

Les nouvelles versions d'Android:

Paramètres -> Applications -> (choisissez votre application) -> Stockage -> Effacer les données et effacer le cache

51
Nobu

Suppression des préférences partagées Android en une seule ligne :-)

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

Ou apply pour une opération asynchrone non bloquante:

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

Il semble que toute solution ne fonctionne pas complètement ou ne soit pas morte 

effacer toutes les références partagées d'une activité 

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

Appelez ceci à partir de l'activité principale après onCreate 

note * j'ai utilisé 

.apply()

au lieu de 

.commit()

vous êtes libre de choisir commit ();

15
Shady Keshk

Vous pouvez utiliser le shell adb pour ce faire, même sans téléphone rooté. Le seul problème est que l'application doit être débogable.

run-as <your package name> <command>

Par exemple:

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

Alternativement, vous pouvez simplement faire ce qui précède, mais sans la commande qui vous dirigera vers la racine du package d'application et vous permettra d'exécuter davantage de commandes dans le contexte de l'application.

10
Johnson Wong
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
8
Vaishali Sutariya

Effacer tous les:

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
6
Dan Alboteanu

dans les définitions de classe

private static final String PREFERENCES = "shared_prefs";

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

à l'intérieur de la classe

public static void deleteAllSharePrefs(){
        sharedPreferences.edit().clear().commit();
      }
6
sivi

Essayez ce code: 

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

À partir de l'API 24 (Nougat), vous pouvez simplement faire:

context.deleteSharedPreferences("YOUR_PREFS");

Cependant, il n'y a pas de compatibilité ascendante, donc si vous supportez moins de 24, restez avec:

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

Vous pouvez également simplement désinstaller manuellement votre application à l'aide de votre appareil. Ensuite, lorsque vous réinstallez votre application, les préférences partagées ont été réinitialisées.

5
wizurd

Si c'est pour vos tests. Vous pouvez utiliser les commandes adb.

adb Shell pm clear <package name>
4
Prakash

Pour supprimer les paires de valeurs de clé de préférence, vous pouvez facilement effectuer les opérations suivantes:

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

J'ai également développé une bibliothèque pour manipuler facilement les préférences partagées. Vous pouvez trouver le lien suivant

https://github.com/farruhha/SimplePrefs

3
Farruh Habibullaev
  • Pour supprimer une valeur particulière,

SharedPreferences.Editor remove (String key) suivi d'un commit () ou d'un apply ()

  • Pour supprimer toutes les valeurs,

    SharedPreferences.Editor clear () suivi d'un commit () ou d'un apply ()

3
Palak Jain

Pour effacer toutes les références partagées de manière centralisée à partir de n'importe quelle classe:

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

Puis de n'importe quelle classe: (Validez le retour booléen où vous pouvez vérifier si vos préférences sont effacées ou non)

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

Ou: vous pouvez utiliser Apply: il retourne void Navigation.getEditor (this) .clear (). Apply ();

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

Cela supprimera les préférences partagées enregistrées avec le nom "someTag".

1
Kiran k g

Aucune des réponses ne fonctionne pour moi car j'ai beaucoup de clés de préférences partagées.

Disons que vous exécutez un test Android au lieu d'un test unitaire.

Cela fonctionne pour moi en boucle et supprimer à travers tous les shared_prefs fichiers.

@BeforeClass sera exécuté avant tous les tests et 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();
    }
}
1
Allen Wang
new File(context.getFilesDir(), fileName).delete();

Je peux supprimer le fichier dans les préférences partagées avec elle

0