4

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

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

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

4

2 回答 2

3

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

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

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

为了解决那条路,你需要ApplicationContext那里你需要反思mLoadedAPK和那里mDataDir。现在我很高兴我可以从调试器中获得路径。对不起,所有想要准备好使用的代码片段的人,你必须自己做。

于 2013-06-25T10:33:06.120 回答
2

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

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

于 2013-06-25T08:24:04.273 回答