强制设置更新

时间:2018-02-17 16:39:40

标签: android settings

我正在创建一个Android应用程序,其中一个设置必须是每个用户都需要更新密码。

因此,在成功登录后,如果用户尚未更新密码,则需要在导航到任何其他屏幕之前强制更新。

实现此目的的最佳方法是什么?任何想法?

更新

回答之后,我的意思是设置我将从firebase数据库中取出作为布尔标志。所以我的实际查询是如何显示作为强制要求获取用户更新? (即)导航到不同的活动或显示弹出窗口并获得设置等。我需要UI设计思路。

最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

目前尚不清楚这有什么意义,如果你有一个服务器端来控制这些东西,但我会尝试提供帮助。

如果您有控制身份验证的服务器:

  • 登录时,请调用服务的API以检查是否已发生。您可以将答案保存为“共享偏好设置”(Android Documentation),这样您就不会每次都调用API。

如果您只想在客户端使用该应用程序:

  • 使用1存储指示是否已执行所需操作的值,这些值在登录后立即进行验证。

编辑: 如果操作是强制性的,您可以将用户发送到活动以更新引脚,这将在执行操作之前发生。

答案 1 :(得分:1)

客户端方法:

你可以使用SharedPreferences来保存一个值,就像一个简单的布尔值,如果用户已经更新了密码,它会通知你。

我建议您在Launcher活动的onResume()中执行检查。

简单明了:

public static final String PREF_FILE_NAME = "PrefFileName";
    public static final String PREF_IS_PIN_CODE_UPDATED = "PREF_IS_PIN_CODE_UPDATED";

    @Override
    protected void onResume() {
        super.onResume();

        SharedPreferences prefs = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
        Boolean isPinCodeUpdated = prefs.getBoolean(PREF_IS_PIN_CODE_UPDATED, false);
        if (isPinCodeUpdated) {
            // You can proceed
        } else {
            // Force the user to update the pin code, by prompting for instance a dialog where he can change the pin with setCancelable(false)
        }
    }

在您知道用户已更新密码后,您只需将首选项设置为true即可。

SharedPreferences.Editor editor = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE).edit();
    editor.putBoolean(PREF_IS_PIN_CODE_UPDATED, true);
    editor.apply();

在此之后,每次用户打开应用时,它都会传递onResume()方法,您的isPinCodeUpdated var将为true,应用应该照常进行。

从你的问题我假设你不想在UI方面做出回应,但你怎么能保持这些信息。

注意:对于同一设备中的多个用户,此实现失败。通过少量调整,您可以使其适用于同一设备中的多个用户,但在我看来,此验证应该在服务器端完成。