我想将用户名和密码直接传递给另一个 Activity ,以便在单击登录按钮后自动登录。但是,我的代码只有在单击一次登录按钮后才能通过。我使用 Sharedpreferences 方法来保存用户名和密码。我有 mainactivity .java和loginactivtiy.java。如果我点击登录按钮,将用户名和密码传递给mainactivity以在webview中自动登录。我该怎么做?请帮助我。抱歉我的英语句子不好。
这是我的代码 Mainactivity.java
/* get email and password from memory for auto login*/
Bundle b = getIntent().getExtras();
String Username = b.getString("Username");
String Password = b.getString("Password");
Log.d("Username Check", "this username is " + Username);
Log.d("Passowrd Check", "this password is " + Password);
StringBuilder sb = new StringBuilder();
sb.append("document.getElementById('signin-email').value = '" + Username + "';");
sb.append("document.getElementById('signin-password').value = '" + Password + "';");
sb.append("document.getElementById('login_frm_id').submit();");
sb.append("})()");
view.loadUrl("javascript:" + sb.toString());
}
这是Loginactivity.java
final String username= mEmailView.getText().toString();
final String password= mPasswordView.getText().toString();
mEmailSignInButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.v("Username", "Username is " + username);
/*encrypt password*/
try {
Key key = AESHelper.generateKey();
byte[] encrypted = AESHelper.encrypt(password.getBytes(), key); //暗号化された
byte[] encrypt = AESHelper.decrypt(encrypted, key); //復号化した
String decrypted = new String(encrypt); //文字列に戻した
Log.v("EncryptDecrypt", "Encoded String " + encrypt);
Log.v("EncryptDecrypt", "Dncoded String " + decrypted);
} catch (Exception e) {
e.printStackTrace();
}
savePreferences("storedName", mEmailView.getText().toString());
savePreferences("storedPass", mPasswordView.getText().toString());
Intent i =new Intent (LoginActivity.this,MainActivity.class);
i.putExtra("flag", "add");
startActivity(i);
finish();
if (username!=null && password!=null) {
Bundle b = new Bundle();
Intent intent= new Intent(LoginActivity.this, MainActivity.class);
b.putString("Username", username);
b.putString("Password", password);
intent.putExtras(b);
startActivity(intent);
}else{
Intent b =new Intent (LoginActivity.this,LoginActivity.class);
startActivity(b);
}
}
});
保存用户名和密码
/*Saving username and password using sharedpreference*/
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
String name = sharedPreferences.getString("storedName",mEmailView.getText().toString());
String pass = sharedPreferences.getString("storedPass", mPasswordView.getText().toString());
mEmailView.setText(name);
mPasswordView.setText(pass);
}
private void savePreferences(String key, boolean value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
最佳答案
您可以通过保留 boolean 值优先来实现此目的。当用户第一次登录时设置其值true。在 onCreate 方法的主要 Activity 中检查此值。如果这是真的,只需将 Intent 传递给您的下一个 Activity 。否则要求用户登录。
关于java - 我想在单击登录按钮后直接传递电子邮件和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867909/