共享首选项存储在哪里?


147

在Eclipse项目中,谁可能遇到共享的首选项文件?


我知道共享的preference.xml存储在数据中,但是在安装之前它存储在哪里;.smali格式?
sharath3589

Answers:


241

SharedPreferences存储在应用程序数据文件夹中的xml文件中,即

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

或默认首选项位于:

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

运行时添加的SharedPreferences不存储在Eclipse项目中。

注意:访问/data/data/<package_name>需要超级用户权限


3
默认的共享首选项文件实际上是:/data/data/<package>/shared_prefs/<package>_preferences.xml
inazaruk

@inazaruk这确实是完整的程序包名称,尽管我看到/<package>_preferences.xml/<package>.xml在设备上混合使用。也许这取决于应用程序的API级别?
阿莱丹2011年

1
请注意,我正在考虑默认共享首选项。看起来文件名对于他们总是一样的。请参见的初始提交PreferenceManager.javagetDefaultSharedPreferences此处的功能:android.git.kernel.org/?p=platform/frameworks/…。而且在最新版本中PrefencesManager.jave也没有更改:android.git.kernel.org/?
p = platform / frameworks /…

有什么方法可以从系统获取路径,而不是对其进行硬编码?ContextImpl.java在私有getPreferencesDir函数中实现了它,以某种方式在运行时获取它会很有用。
指针为空

您可以使用新的FIle(context.getFilesDir()。getParent(),“ shared_prefs”)。确实可以在Nexus 5上使用,不确定其他制造商。
gswierczynski,2015年

9

首选项可以在代码中设置,也可以在res / xml / preferences.xml中找到。您可以在Android SDK网站上阅读有关首选项的更多信息。


4
您必须创建它-只要创建了Android项目,就可以右键单击“ res”目录并添加一个名为“ xml”的新文件夹。其他“特殊”文件夹包括动画,可绘制,布局,菜单,原始和值。
JasCav 2011年

6

只是为了节省您的时间...

在我的Galaxy S v.2.3.3上,共享首选项未存储在:/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

但现在位于: /dbdata/databases/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

我相信他们在2.3中更改了


1
2.2是否相同?我在Eclipse或项目位置的项目中任何地方都找不到/ data文件。
Pramod

@pramod不在eclipse中-这是实际设备文件结构上的路径。
理查德·勒·马苏里尔

@Pramod在文件资源管理器视图中以及在其中查看/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
Akhil Jain

2
/dbdata/在我的JB设备上不存在

6

我只是试图在下面这样获得共享首选项的路径。这对我来说是工作。

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

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

5

数据存储在设备的应用程序专用数据区域中。它不在Eclipse项目中。


3

共享首选项是我们可以存储的键/值对。它们是内部存储类型,这意味着我们不必创建外部数据库来存储它。要查看它,请:1)转到菜单栏中的查看。选择工具窗口。2)单击设备文件资源管理器。3)设备文件资源管理器在右侧打开。4)找到数据文件夹,然后单击它。5)在数据文件夹中,您可以选择另一个数据文件夹。6)尝试在此数据文件夹中搜索您的软件包名称。例如:com.example.com 7)然后单击shared_prefs并打开.xml文件。

希望这可以帮助!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.