【问题标题】:Where are shared preferences stored?共享首选项存储在哪里?
【发布时间】:2011-09-03 00:25:48
【问题描述】:

在 Eclipse 项目中的哪个位置可能会遇到共享首选项文件?

【问题讨论】:

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

标签: android sharedpreferences


【解决方案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 项目中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-30
            • 2019-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-04-04
            • 2015-10-17
            相关资源
            最近更新 更多