diff --git a/app/src/main/java/com/ouxuan/oxface/MainActivity.java b/app/src/main/java/com/ouxuan/oxface/MainActivity.java index 6c9b812..71a195b 100644 --- a/app/src/main/java/com/ouxuan/oxface/MainActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/MainActivity.java @@ -83,6 +83,9 @@ public class MainActivity extends AppCompatActivity { // 初始化登录数据管理器 loginDataManager = LoginDataManager.getInstance(this); + // 自动填充已保存的用户名和密码 + autoFillCredentials(); + // 初始化设备选择数据管理器 deviceSelectDataManager = DeviceSelectDataManager.getInstance(this); @@ -128,6 +131,23 @@ public class MainActivity extends AppCompatActivity { buttonLogin = findViewById(R.id.buttonLogin); imageViewPasswordToggle = findViewById(R.id.imageViewPasswordToggle); } + + /** + * 自动填充已保存的用户名和密码 + */ + private void autoFillCredentials() { + if (loginDataManager != null) { + // 如果有保存的用户名和密码,则自动填充 + String savedUsername = loginDataManager.getUsername(); + String savedPassword = loginDataManager.getPassword(); + if (!savedUsername.isEmpty()) { + editTextUsername.setText(savedUsername); + } + if (!savedPassword.isEmpty()) { + editTextPassword.setText(savedPassword); + } + } + } /** * 检查自启动状态 @@ -319,6 +339,8 @@ public class MainActivity extends AppCompatActivity { // 使用LoginDataManager保存登录数据 loginDataManager.saveLoginData(data); + // 保存用户名和密码 + loginDataManager.saveCredentials(username, password); // 打印存储的data android.util.Log.d("MainActivity", "Login Data: " + data.toString()); diff --git a/app/src/main/java/com/ouxuan/oxface/data/LoginDataManager.java b/app/src/main/java/com/ouxuan/oxface/data/LoginDataManager.java index b101bd5..152e4c3 100644 --- a/app/src/main/java/com/ouxuan/oxface/data/LoginDataManager.java +++ b/app/src/main/java/com/ouxuan/oxface/data/LoginDataManager.java @@ -22,6 +22,9 @@ public class LoginDataManager { private static final String KEY_USER_ID = "user_id"; private static final String KEY_IS_LOGGED_IN = "is_logged_in"; private static final String KEY_TOKEN_SAVE_TIME = "token_save_time"; // token保存时间,用于判断有效性 + // 新增用户名和密码的键 + private static final String KEY_USERNAME = "username"; + private static final String KEY_PASSWORD = "password"; private SharedPreferences preferences; private Gson gson; @@ -31,6 +34,9 @@ public class LoginDataManager { // 内存缓存 private PadApiService.PadLoginResponse currentLoginData; private boolean isLoggedIn = false; + // 新增用户名和密码的内存缓存 + private String cachedUsername = ""; + private String cachedPassword = ""; private LoginDataManager(Context context) { preferences = context.getApplicationContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); @@ -81,6 +87,36 @@ public class LoginDataManager { logLoginInfo(); } + // 新增保存用户名和密码的方法 + public void saveCredentials(String username, String password) { + SharedPreferences.Editor editor = preferences.edit(); + editor.putString(KEY_USERNAME, username); + editor.putString(KEY_PASSWORD, password); + editor.apply(); + + // 更新内存缓存 + this.cachedUsername = username; + this.cachedPassword = password; + + Log.d(TAG, "用户名和密码保存成功"); + } + + // 新增获取用户名的方法 + public String getUsername() { + if (!cachedUsername.isEmpty()) { + return cachedUsername; + } + return preferences.getString(KEY_USERNAME, ""); + } + + // 新增获取密码的方法 + public String getPassword() { + if (!cachedPassword.isEmpty()) { + return cachedPassword; + } + return preferences.getString(KEY_PASSWORD, ""); + } + /** * 获取当前登录数据 * @return 登录数据,如果未登录返回null @@ -204,6 +240,8 @@ public class LoginDataManager { // 清除内存缓存 this.currentLoginData = null; this.isLoggedIn = false; + this.cachedUsername = ""; + this.cachedPassword = ""; // 清除持久化存储 SharedPreferences.Editor editor = preferences.edit(); @@ -211,6 +249,8 @@ public class LoginDataManager { editor.remove(KEY_AUTH_TOKEN); editor.remove(KEY_USER_ID); editor.remove(KEY_TOKEN_SAVE_TIME); + editor.remove(KEY_USERNAME); + editor.remove(KEY_PASSWORD); editor.putBoolean(KEY_IS_LOGGED_IN, false); editor.apply(); @@ -232,6 +272,10 @@ public class LoginDataManager { } else { Log.d(TAG, "本地无有效登录数据"); } + + // 加载用户名和密码到内存缓存 + cachedUsername = preferences.getString(KEY_USERNAME, ""); + cachedPassword = preferences.getString(KEY_PASSWORD, ""); } catch (Exception e) { Log.e(TAG, "加载登录数据失败: " + e.getMessage()); // 清除可能损坏的数据