Android Studio SharedPreference 将登录信息保存到数据库

Android Studio SharedPreference Saving Login to Database

我想在用户首次将移动应用程序登录到我的设备时保存用户的登录详细信息table,并让他们在每次打开应用程序时绕过登录屏幕。

我想我已经完成了这一部分,它只是保存了我不理解的变量。我的问题是我应该如何以及从哪里开始保存用户的详细信息?

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // declaring variebles
        etUsername = (EditText)findViewById(R.id.etUsername);
        etPassword= (EditText)findViewById(R.id.etPassword);
        btnLogin = (Button)findViewById(R.id.btnLogin);
        etIpAddress = (EditText) findViewById(R.id.etIpAddress);
        final String username = etUsername.getText().toString();
        final String password = etPassword.getText().toString();
        String ipAddress = etIpAddress.getText().toString();

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this);
        if (sharedPreferences.contains("ip")) {
            performLogin(username, password, sharedPreferences.getString("ip", ipAddress));
        }

        // setting up things for login button
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
    public void onClick(View v) {

        String ipAddress = etIpAddress.getText().toString();

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this);

        String username = etUsername.getText().toString().trim();
        String password = etPassword.getText().toString().trim();

        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putString("ip", ipAddress);
        editor.putString("username", username);
        editor.putString("password", password);
        editor.commit();

        performLogin(username, password, ipAddress);
    }
});
        }

这里:

performLogin(username, password, sharedPreferences.getString("ip", ipAddress));

用户登录失败,因为 usernamepassword 每次启动 Activity 时都将空值传递给 performLogin

以与获取 ip 相同的方式也可以从 SharedPreferences 获取 usernamepassword,例如:

if (sharedPreferences.contains("ip")) {
      String strUsername=sharedPreferences.getString("username", "");
      String strPassword=sharedPreferences.getString("password", "");
      String strIpAddress=sharedPreferences.getString("ip", ipAddress);
      performLogin(strUsername, strPassword,strIpAddress);
  }

您想从共享首选项中获取用户名和密码,例如 ipAddress,然后调用 perfomLogin 方法。

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(LoginActivity.this); if (sharedPreferences.contains("ip")) { performLogin(sharedPreferences.getString("username", ""), sharedPreferences.getString("password", ""), sharedPreferences.getString("ip", "")); }