Comment obtenir toutes les clés dans SharedPreferences
, pas la valeur de la préférence, uniquement la clé?
prefA = getSharedPreferences("MyAttack", MODE_PRIVATE);
prefB= getSharedPreferences("MySkill", MODE_PRIVATE);
SharedPreferences
a la méthode getAll()
qui retourne un Map<String, ?>
. À partir de la carte, vous pouvez récupérer facilement les clés avec keySet()
et les mappages clé/valeur avec entrySet()
:
Map<String, ?> allEntries = prefA.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
}
Ce que vous pouvez faire est d'utiliser la méthode getAll () de SharedPreferences et d'obtenir toutes les valeurs dans Map. Vous pourrez ensuite les parcourir facilement
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("map values",entry.getKey() + ": " + entry.getValue().toString());
}
Pour plus d'informations, vous pouvez vérifier l'implémentation de dump () de PrefUtil.Java avec ce lien link .
Utilisez la méthode getAll () de Android.content.SharedPreferences
.
Map<String, ?> map = sharedPreferences.getAll();
Découvrez le code ci-dessous pour la méthode getAll()
Map<String, ?> prefsMap = prefA.getAll();
for (Map.Entry<String, ?> entry: prefsMap.entrySet()) {
Log.v("SharedPreferences", entry.getKey() + ":" +
entry.getValue().toString());
}
Kotlin vous permettra d'obtenir toutes vos clés SharedPreferences avec une seule ligne en utilisant Map .
Salut mate ????
val sharedPreferences = context.getSharedPreferences("SHARED_PREFERENCES", Context.MODE_PRIVATE)
val sharedPreferenceIds = sharedPreferences.all.map { it.key } //returns List<String>
Après avoir lu la réponse @Delacrix et joué avec la méthode Kotlin (testée dans Kotlin 1.3.11) pour récupérer les clés, j'ai découvert une version encore plus courte pour obtenir les clés (ou même les valeurs):
val prefsA = context.getSharedPreferences("MyAttack", Context.MODE_PRIVATE)
val prefsAIDs = sharedPreferences.all.keys //returns MutableSet<String>
De la même manière, vous ne pouvez accéder qu'aux valeurs via sharedPreferences.all.values
(même si ce n'est pas ce que vous avez demandé dans votre question, cela pourrait être utile pour les autres lecteurs).
Bien que la réponse de @ Blackbelt soit très populaire ici, je pense qu'elle ne vise pas réellement la question. (Ce n'est pas surprenant puisque la question mélange la terminologie des noms de préférences et des clés.) Je suppose que la question est de savoir quelles instances de préférences partagées ont été créées - ce qui peut présenter un intérêt si les noms sont créés de manière dynamique.
Voici deux stratégies pour cela:
créer une autre instance "méta" de préférences partagées dans laquelle toutes les instances de préférences partagées créées sont enregistrées en ajoutant une paire clé/valeur correspondante dans les préférences méta - la clé étant le nom de la préfecture partagée et la valeur, par exemple toute valeur true
.
getSharedPreferences( DYNAMIC_PREFS_NAME, 0 )
.edit().put*(*).apply();
getSharedPreferences( "meta_prefs_index", 0 )
.edit().putBoolean( DYNAMIC_PREFS_NAME, true).apply();
Pour obtenir toutes les préférences partagées que vous avez créées, utilisez les méta-préférences et suivez la réponse de @Blackbelt.
les préférences partagées ont un fichier de sauvegarde, qui est stocké dans le dossier /data/data/YOUR_PACKAGE_NAME/shared_prefs
avec le nom YOUR_PREFS_NAME.xml
Vous pouvez donc rechercher dans ce répertoire vos fichiers de préférences partagés. Mais attention, il peut y avoir des fichiers de préférences partagés qui n'ont pas été créés par votre logique! Donc je m'en tenais à la première approche.