我正在创建一个Android应用程序,其中一个设置必须是每个用户都需要更新密码。
因此,在成功登录后,如果用户尚未更新密码,则需要在导航到任何其他屏幕之前强制更新。
实现此目的的最佳方法是什么?任何想法?
更新
回答之后,我的意思是设置我将从firebase数据库中取出作为布尔标志。所以我的实际查询是如何显示作为强制要求获取用户更新? (即)导航到不同的活动或显示弹出窗口并获得设置等。我需要UI设计思路。
最佳做法是什么?
答案 0 :(得分: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方面做出回应,但你怎么能保持这些信息。
注意:对于同一设备中的多个用户,此实现失败。通过少量调整,您可以使其适用于同一设备中的多个用户,但在我看来,此验证应该在服务器端完成。