Paylaşılan tercihler nerede saklanır?


147

Eclipse projesinde nerede paylaşılan tercihler dosyası ile karşılaşılabilir?


Paylaşılan preference.xml dosyasının verilerde saklandığının farkındayım, ancak yüklenmeden önce nerede saklandığını; biçiminde?
sharath3589

Yanıtlar:


241

SharedPreferences, uygulama veri klasöründeki bir xml dosyasında saklanır, ör.

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

veya varsayılan tercihler:

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

Çalışma zamanı sırasında eklenen SharedPreferences Eclipse projesinde saklanmaz.

Not: Erişim /data/data/<package_name>için süper kullanıcı ayrıcalıkları gerekir


3
Varsayılan paylaşılan tercihleri dosya aslında olacaktır: /data/data/<package>/shared_prefs/<package>_preferences.xml.
inazaruk

@inazaruk Cihazların /<package>_preferences.xmlve /<package>.xmlcihazların karışık kullanımlarını görsem de gerçekten tam paket adı . Belki de uygulamanın API düzeyine bağlıdır?
Aleadam

1
Varsayılan paylaşılan tercihleri ele aldığımı unutmayın . Görünüşe göre dosya adı onlar için hep aynıydı. İlk için taahhüt bakın PreferenceManager.java, getDefaultSharedPreferencesburayı işlev android.git.kernel.org/?p=platform/frameworks/... . Ve son sürümde de değişmedi PrefencesManager.jave: android.git.kernel.org/?p=platform/frameworks/…
inazaruk

Herhangi bir yol yolu sistemden almak ve sabit kod değil mi? ContextImpl.java bunu özel getPreferencesDir işlevinde uygular, bunu bir şekilde çalışma zamanında almak yararlı olacaktır.
Pointer Null

Yeni dosya kullanabilirsiniz (context.getFilesDir (). GetParent (), "shared_prefs"). Nexus 5 üzerinde çalışır, diğer üreticilerden emin değildir.
gswierczynski

9

Tercihler kod olarak ayarlanabilir veya res / xml / preferences.xml dosyasında bulunabilir. Tercihler hakkında daha fazla bilgiyi Android SDK web sitesinde okuyabilirsiniz.


4
Oluşturmalısınız - bir Android projesi oluşturduğunuz sürece, "res" dizinine sağ tıklayıp 'xml' adlı yeni bir klasör ekleyebilirsiniz. Diğer "özel" klasörler anim, çekilebilir, düzen, menü, ham ve değerlerdir.
JasCav

6

Sadece biraz zaman kazanmak için ...

Galaxy S v.2.3.3'te Paylaşılan Tercihler şu konumda depolanmaz:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

ancak şu anda bulunur: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

Bunu 2.3'te değiştirdiklerine inanıyorum


1
2.2'de aynı mı? Eclipse veya proje konumunda projemin herhangi bir yerinde / veri dosyasını bulamıyorum.
Pramod

@pramod eclipse içinde değil - bu gerçek aygıt dosyası yapısındaki yoldur.
Richard Le Mesurier

@Pramod dosya gezgini görünümünde ve orada görmek/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/JB cihazımda mevcut değil
rekire

6

Aşağıda bu şekilde paylaşılan tercihlerin yolunu bulmaya çalıştım.Bu benim için bir iş.

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

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

5

Veriler cihazda, uygulamanızın özel veri alanında saklanır. Eclipse projesinde değil.


3

Paylaşılan Tercihler, depolayabileceğimiz anahtar / değer çiftleridir. Dahili depolama türüdür, yani depolamak için harici bir veritabanı oluşturmamız gerekmez. Görmek için, 1) Menü çubuğunda Görüntüle'ye gidin. Araç Pencereleri'ni seçin. 2) Aygıt Dosya Gezgini'ni tıklayın. 3) Sağ tarafta Aygıt Dosya Gezgini açılır. 4) Veri klasörünü bulun ve tıklayın. 5) Veri klasöründe başka bir veri klasörü seçebilirsiniz. 6) Bu veri klasöründe paketinizin adını aramaya çalışın. Ör: com.example.com 7) Ardından shared_prefs'i tıklayın ve .xml dosyasını açın.

Bu yardımcı olur umarım!


1

Chrome inceleme araçlarıyla uygulamanızın yerel deposuna erişmek için http://facebook.github.io/stetho/ kitaplığını kullanın . SharedPreference dosyasını Yerel depolama -> <uygulamanızın paket adı> altında bulabilirsiniz

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.