Android PreferenceScreen密码保护



在我的应用程序中,我想有我的首选项密码保护的部分。没有必要让它们"真正"安全——只是一些设置应该只有在"你知道你在做什么"的情况下才更改(这是一个企业应用程序)。

我的偏好层次是这样的

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(...)只是开始一个片段,以防首选项设置了它。

我还尝试在PreferenceFragment的onCreate中设置首选项的onClickListener -像这样:

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

但是这也不能拦截点击。

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

所以如果用户没有密码就关闭片段。在你能抓住的地方抓住它。这并不重要

您可以通过调用

来处理这个问题
override fun onNavigateToScreen(preferenceScreen: PreferenceScreen) {
    if (preferenceScreen.key == "protected_screen_key") {
        // do noting
    } else {
        super.onNavigateToScreen(preferenceScreen)
    }
}

最新更新