1

在我的应用程序中,我希望部分偏好密码受到保护。没有真正需要让它们“真正”得到保护——只是一些设置只有在“你知道你在做什么”的情况下才应该改变(它是一个企业应用程序)。

所以我的偏好层次结构看起来像这样:

PreferenceScreen
+-- PreferenceScreen
    +-- SettingA
    +-- SettingB
+-- PreferenceScreen (this one should be password protected)
    +-- SettingC
    +-- SettingD

问题是,我找不到任何方法来拦截点击偏好屏幕 - 我试图覆盖该onPreferenceTreeClicked方法,但这不起作用:

@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    if(userHasEnteredCorrectPassword) {
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    } else {
        return false;
    }
}

显然,因为super.onPreferenceTreeClick(...)just start 是一个片段,以防偏好设置它。

我还尝试onClickListeneronCreatePreferenceFragment 中设置首选项 - 如下所示:

findPreference("secure_preference_screen").setOnPreferenceClickListener(new OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        if(userHasEnteredCorrectPassword) {
            return true;
        } else {
            return false;
        }
    }
});

但这也不会拦截点击。

有没有人可能知道如何实现这样的功能?

4

1 回答 1

1

因此,如果用户没有密码,只需关闭片段。尽可能抓住它。这并不重要

于 2013-05-23T08:19:07.687 回答