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é?

autruche de ferme
la source
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

Aleadam
la source
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.

JasCav
la source
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

android-overflow
la source
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());
Ramesh Akula
la source
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.

hackbod
la source
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!

Chinmai Kulkarni
la source
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

Harshit Jain
la source