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.
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()
.
Ma solution:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
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();
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
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();
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 ();
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.
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
Effacer tous les:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
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();
}
Essayez ce code:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
À 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();
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.
Si c'est pour vos tests. Vous pouvez utiliser les commandes adb.
adb Shell pm clear <package name>
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
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 ()
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 ();
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".
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();
}
}
new File(context.getFilesDir(), fileName).delete();
Je peux supprimer le fichier dans les préférences partagées avec elle