Où sont stockées les préférences partagées?


147

Dans un projet Eclipse, où peut-on rencontrer un fichier de préférences partagé?


Je suis conscient que shared preferences.xml est stocké dans les données, mais où est-il stocké avant d'être installé; au format .smali?
sharath3589

Réponses:


241

Les préférences partagées sont stockées dans un fichier xml dans le dossier de données de l'application, c.-à-d.

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

ou les préférences par défaut à:

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

Les SharedPreferences ajoutées pendant l'exécution ne sont pas stockées dans le projet Eclipse.

Remarque: l'accès /data/data/<package_name>nécessite des privilèges de superutilisateur


3
Le fichier de préférences par défaut partagé serait en fait: /data/data/<package>/shared_prefs/<package>_preferences.xml.
inazaruk

@inazaruk C'est en effet le nom complet du package, même si je vois des utilisations mixtes de /<package>_preferences.xmlet /<package>.xmlsur les appareils. Cela dépend peut-être du niveau d'API de l'application?
Aleadam

1
Notez que je parlais des préférences partagées par défaut . Il semble que le nom de fichier était toujours le même pour eux. Voir le commit initial pour PreferenceManager.java, getDefaultSharedPreferencesfonction ici: android.git.kernel.org/?p=platform/frameworks/… . Et cela n'a pas été changé dans la dernière version de PrefencesManager.javeaussi: android.git.kernel.org/?p=platform/frameworks/…
inazaruk

Un moyen d'obtenir le chemin du système, et non de le coder en dur? ContextImpl.java l'implémente dans la fonction getPreferencesDir privée, il serait utile de l'obtenir au moment de l'exécution.
Pointer Null

Vous pouvez utiliser un nouveau FIle (context.getFilesDir (). GetParent (), "shared_prefs"). Cela fonctionne sur Nexus 5, pas sûr des autres fabricants.
gswierczynski

9

Les préférences peuvent être définies dans le code ou peuvent être trouvées dans res / xml / preferences.xml. Vous pouvez en savoir plus sur les préférences sur le site Web du SDK Android.


4
Vous devez le créer - tant que vous avez créé un projet Android, vous pouvez ensuite faire un clic droit sur le répertoire "res" et ajouter un nouveau dossier appelé "xml". Les autres dossiers "spéciaux" sont anim, drawable, layout, menu, raw et values.
JasCav

6

Juste pour gagner du temps ...

Sur mon Galaxy S v.2.3.3, les préférences partagées ne sont pas stockées dans:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

mais sont maintenant situés dans: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Je crois qu'ils ont changé cela en 2.3


1
Est-ce la même chose en 2.2? Je ne trouve pas le fichier / data n'importe où dans mon projet, que ce soit dans l'éclipse ou l'emplacement du projet.
Pramod du

@pramod pas dans eclipse - c'est le chemin sur la structure de fichier de périphérique réelle.
Richard Le Mesurier

@Pramod le voir dans l'explorateur de fichiers et là dans/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/n'existe pas sur mon appareil JB
rekire

6

J'ai juste essayé d'obtenir le chemin des préférences partagées ci-dessous comme ceci. C'est un travail pour moi.

File f = getDatabasePath("MyPrefsFile.xml");

if (f != null)
    Log.i("TAG", f.getAbsolutePath());

5

Les données sont stockées sur l'appareil, dans la zone de données privée de votre application. Ce n'est pas dans un projet Eclipse.


3

Les préférences partagées sont les paires clé / valeur que nous pouvons stocker. Il s'agit de type de stockage interne, ce qui signifie que nous n'avons pas à créer une base de données externe pour la stocker. Pour le voir, accédez à, 1) Accédez à Affichage dans la barre de menus. Sélectionnez Outils Windows. 2) Cliquez sur Device File Explorer. 3) L'Explorateur de fichiers de périphériques s'ouvre sur le côté droit. 4) Trouvez le dossier de données et cliquez dessus. 5) Dans le dossier de données, vous pouvez sélectionner un autre dossier de données. 6) Essayez de rechercher le nom de votre package dans ce dossier de données. Ex: com.example.com 7) Cliquez ensuite sur shared_prefs et ouvrez le fichier .xml.

J'espère que cela t'aides!


1

Utilisez la bibliothèque http://facebook.github.io/stetho/ pour accéder au stockage local de votre application avec les outils d'inspection de chrome. Vous pouvez trouver le fichier sharedPreference sous Stockage local -> <nom du package de votre application>

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.