【问题标题】:Where are the settings of a preferences screen stored?首选项屏幕的设置存储在哪里?
【发布时间】:2013-06-25 08:18:07
【问题描述】:

我知道这个问题有点愚蠢,但我找不到我的首选项屏幕设置的存储位置。

我正在使用共享首选项,此文件位于 /data/data/my.package.name/shared_prefs/common.xml。但是,当我更改某些内容时,更改会被存储。我什至实现了自定义控件,到目前为止可以存储他们的信息。但是,我无法弄清楚设置的存储位置。 /data/data/my.package.name/ 只是一个 xml 文件,不包含任何相关信息。我还检查了多用户设备的虚拟目录,但没有运气。

这是我的 xml:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/my.package.name"
    android:persistent="true" >

    <PreferenceCategory android:title="@string/settings_basics_group" >
        <EditTextPreference
            android:key="nickname"
            android:persistent="true"
            android:positiveButtonText="@string/setting_change_name"
            android:title="@string/settings_username" />
        <my.package.name.controls.EmailPreference
            android:key="mail"
            android:title="@string/settings_email"
            custom:domains="@array/known_email_domains" />
        <Preference
            android:summary="Mars"
            android:title="@string/settings_current_location" />
        <my.package.name.controls.DatePreference
            android:key="birthday"
            android:title="@string/settings_birthday" />
    </PreferenceCategory>
</PreferenceScreen>

如果有人能解释一下这些设置的存储位置,我会非常高兴。

【问题讨论】:

  • 请解释什么“但是当我更改某些内容时,更改会被存储” - 你的意思是“但是当我更改某些内容时,更改是不是存储在那里

标签: android settings android-preferences preferencescreen


【解决方案1】:

对于较旧的 Android 版本,包括 Jelly Bean (API 16) 和较早版本,Dalmas 的答案是正确的。因此,请随时为该答案投票。

Jelly Bean MR1 (API 17) 开始,由于多用户支持,所以有关于路径的新规则:

我发现设置文件位于/data/user/##/my.package.name/shared_prefs/my.package.name_preferences.xml,其中## 是我的数字用户ID。

要解决该路径,您需要ApplicationContext,您需要反映mLoadedAPKmDataDir。现在我很高兴我可以从调试器中获得路径。对不起,所有想要一个现成的代码 sn-p 的人,你必须自己做。

【讨论】:

    【解决方案2】:

    应用首选项存储在您可以使用PreferenceManager.getDefaultSharedPreferences() 检索的默认共享首选项中。

    XML 文件本身位于/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

    【讨论】:

    • 知道我可以通过这种方式访问​​设置真的很有帮助,但是没有这样的文件。那我的问题。我还可以消除此设置仅在内存中。即使我的应用程序崩溃或关闭,这些设置也会被存储。
    • 你的安卓版本是多少?
    • 我正在 4.2.2 设备 (API 17) 上尝试。但是在另一个带有 (2.3.5) 的 API 10 设备上,该文件就在那里。奇怪。
    • 我发现该文件位于/data/user/##/my.package.name/shared_prefs/my.package.name_preferences.xml,其中## 是我的数字用户ID。我无法从控制台读取这个文件,但这个谜对我来说很有趣。为了走这条路,你需要ApplicationContext,你需要反映mLoadedAPKmDataDir
    猜你喜欢
    • 1970-01-01
    • 2013-06-30
    • 2011-09-03
    • 2010-11-19
    • 2011-06-24
    • 1970-01-01
    • 2010-10-15
    • 2015-07-13
    相关资源
    最近更新 更多