共享首选项存储在哪里?

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.javagetDefaultSharedPreferences 函数的初始提交: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 项目中。

【讨论】:

以上是关于共享首选项存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在共享首选项中获取文件大小

在共享首选项中解码存储的 json 结果字符串

将不同的数据类型存储在相同的共享首选项中[重复]

在哪里存储 JWT 令牌?

将 Web 服务数据存储到共享首选项

使用 parcelable 将项目存储为共享首选项?