问题描述
我有一个活动,正在尝试实现一种自动登录。 在我的登录活动中,我有以下内容:
sharedPref = context.getSharedPreferences("data", Context.MODE_PRIVATE);
User.setUid(sharedPref.getInt("UID", 1));
Boolean al = sharedPref.getBoolean("AUTOLOGIN", false);
...
if (al) {
Log.i("AUTOLOGIN", "Go!");
Gui.createAlert(context, context.getString(R.string.loading));
Intent i = new Intent(context, CityActivity.class);
context.startActivity(i);
}
...
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
Ajax.AjaxListener callback = new Ajax.AjaxListener() {
int uid = Integer.parseInt(userInfo.optString("user_id", "1"));
String sid = user.optString("sid", "");
String k = json.optString("k", "");
Boolean al = autoLogin.isChecked();
SharedPreferences.Editor e = sharedPref.edit();
e.putInt("UID", uid).putBoolean("AUTOLOGIN", al).putString("SID", sid).apply();
Gui.createAlert(context, context.getString(R.string.loading));
Intent i = new Intent(context, CityActivity.class);
};
});
我只能在模拟器上进行测试,而且似乎无法让SharedPreferences
文件内容显示在Android设备监视器中,但是每次应用加载时,它都会执行自动登录例程。
即使当我完全关闭模拟器并重新启动所有功能时,自动登录标志似乎仍然存在。
我对Java / Android编程还很陌生,但是来自PHP和JavaScript背景,并不难。
我只是对为什么AUTOLOGIN
SharedPreference
键在被选中时总是看起来返回true
AUTOLOGIN
。
有没有使用SharedPreferences
实现自动登录的示例?
我应该注意,我最初尝试使用数据库,但是由于使用困难以及目前所需的数据最少而放弃了这个想法。
1楼
试试这个希望对您有帮助的希望。 MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void login(View v){
SharedPreferences spf=getSharedPreferences("myprfs",Context.MODE_PRIVATE);
String name=spf.getString("uname", "no value");
String pass=spf.getString("pass", "no value");
EditText et1=(EditText)findViewById(R.id.editText1);
EditText et2=(EditText)findViewById(R.id.editText2);
if(et1.getText().toString().equalsIgnoreCase(name) && et2.getText().toString().equalsIgnoreCase(pass))
{
Intent i=new Intent();
i.setComponent(new ComponentName(getApplicationContext(), WelcomeActivity.class));
startActivity(i);
}
}
public void register(View v){
Intent i=new Intent();
i.setComponent(new ComponentName(getApplicationContext(), RegistrationActivity.class));
startActivity(i);
}
}
RegistrationActivity.java
public class RegistrationActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
}
public void register(View v){
EditText et1=(EditText)findViewById(R.id.editText1);
EditText et2=(EditText)findViewById(R.id.editText2);
EditText et3=(EditText)findViewById(R.id.editText3);
SharedPreferences spf=getSharedPreferences("myprfs", Context.MODE_PRIVATE);
SharedPreferences.Editor spe=spf.edit();
spe.putString("uname", et1.getText().toString());
spe.putString("pass", et2.getText().toString());
spe.putString("dob", et3.getText().toString());
spe.commit();
finish();
}
}