共享首选项存储在哪里?
Posted
技术标签:
【中文标题】共享首选项存储在哪里?【英文标题】:Where are shared preferences stored? 【发布时间】:2011-09-03 00:25:48 【问题描述】:在 Eclipse 项目中的哪个位置可能会遇到共享首选项文件?
【问题讨论】:
我知道共享的preference.xml存储在数据中,但是在安装之前它存储在哪里; .smali 格式? 【参考方案1】:保存在/data/data/your_package_name/shared_prefs/
看看你可以使用:
Android Device Monitor
Stetho
Android Debug Database
【讨论】:
【参考方案2】:共享首选项是我们可以存储的键/值对。它们是内部存储类型,这意味着我们不必创建外部数据库来存储它。看到它去, 1) 转到菜单栏中的查看。选择工具窗口。 2) 单击设备文件资源管理器。 3) 设备文件资源管理器在右侧打开。 4)找到数据文件夹并单击它。 5) 在数据文件夹中,您可以选择另一个数据文件夹。 6)尝试在此数据文件夹中搜索您的包名称。例如:com.example.com 7) 然后点击 shared_prefs 并打开 .xml 文件。
希望这会有所帮助!
【讨论】:
【参考方案3】:使用 http://facebook.github.io/stetho/ 库通过 chrome 检查工具访问您应用的本地存储。 您可以在本地存储下找到 sharedPreference 文件 ->
【讨论】:
【参考方案4】: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>
需要超级用户权限
【讨论】:
默认的共享首选项文件实际上是:/data/data/<package>/shared_prefs/<package>_preferences.xml
。
@inazaruk 这确实是完整的包名,尽管我在设备上看到了/<package>_preferences.xml
和/<package>.xml
的混合使用。也许这取决于应用的 API 级别?
请注意,我正在讨论 Default 共享首选项。看起来文件名对他们来说总是一样的。在此处查看PreferenceManager.java
、getDefaultSharedPreferences
函数的初始提交:android.git.kernel.org/?p=platform/frameworks/…。在PrefencesManager.jave
的最新版本中也没有改变:android.git.kernel.org/?p=platform/frameworks/…
有什么方法可以从系统中获取路径,而不是硬编码? ContextImpl.java 在私有 getPreferencesDir 函数中实现它,以某种方式在运行时获取它会很有用。
您可以使用新文件(context.getFilesDir().getParent(), "shared_prefs")。它确实适用于 Nexus 5,不确定其他制造商。【参考方案5】:
首选项可以在代码中设置,也可以在 res/xml/preferences.xml 中找到。您可以在 Android SDK 网站上阅读有关首选项的更多信息。
【讨论】:
你必须创建它——只要你创建了一个Android项目,你就可以右键单击“res”目录并添加一个名为“xml”的新文件夹。其他“特殊”文件夹是 anim、drawable、layout、menu、raw 和 values。【参考方案6】:我只是想像这样在下面获取共享首选项的路径。这对我有用。
File f = getDatabasePath("MyPrefsFile.xml");
if (f != null)
Log.i("TAG", f.getAbsolutePath());
【讨论】:
【参考方案7】:只是为了节省你们一些时间...
在我的 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 中改变了这一点
【讨论】:
2.2 一样吗?我在 Eclipse 或项目位置的项目中的任何地方都找不到 /data 文件。 @pramod 不在 Eclipse 中 - 这是实际设备文件结构上的路径。 @Pramod 在文件资源管理器视图和/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml
中看到它
/dbdata/
在我的 JB 设备上不存在【参考方案8】:
数据存储在设备上的应用程序的私有数据区域中。它不在 Eclipse 项目中。
【讨论】:
以上是关于共享首选项存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章