存储首选项屏幕的设置在哪里?

时间:2013-06-25 08:18:07

标签: android settings android-preferences preferencescreen

我知道这个问题有点愚蠢,但我无法找到我的偏好设置屏幕的设置存储位置。

我正在使用共享首选项,此文件位于/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>

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

2 个答案:

答案 0 :(得分:2)

应用偏好设置存储在您可以使用PreferenceManager.getDefaultSharedPreferences()检索的默认共享偏好设置中。

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

答案 1 :(得分: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。现在我很高兴我可以从调试器中获取路径。对于想要准备使用代码段的每个人,对不起,您必须自己动手。