无法从 SharedPreferences 读取密钥

Cannot read key from SharedPreferences

所以基本上我有一个 activity (SplashActivity) 作为初始屏幕。它从应用程序的 SharedPreferences 中读取一个名为 username 的键,然后如果找到该键,则启动 HomePage activity。否则它开始 LoginActivityLoginActivity登录成功后,我通过以下代码存储用户名和密码:

SharedPreferences prefs = LoginActivity.this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", username);
editor.putString("password", password);
editor.apply();

登录页面还具有密码字段的自动完成功能。这就是我读取密码的方式:

String password = this.getPreferences(MODE_PRIVATE).getString("password", "");

然后我得到了存储的密码。但是,当我重新启动应用程序并且 运行 SplashActivity 我无法读取密码,尽管使用与上面完全相同的代码。我在这里做错了吗?

引用 the JavaDocs for getPreferences():

Retrieve a SharedPreferences object for accessing preferences that are private to this activity.

(强调)

因此,SplashActivity 无法读取写入 LoginActivity 的私有首选项的值。

您可能想切换到 getSharedPreferences(),您可以在其中提供可以在两个活动之间共享的自己的名称。