Android系列之实现自动登录和记住密码

举报
yd_273762914 发表于 2020/12/03 00:31:53 2020/12/03
【摘要】 记住密码和自动登录是很多手机软件都有的一个功能。可以用 SharedPreferences类来轻松实现。 SharedPreferences是安卓平台的一个轻量级类。采用 SharedPreferences进行数据存储是很方便的。   public class LoginCheckActivity extends Activity implements OnCl...

记住密码和自动登录是很多手机软件都有的一个功能。可以用 SharedPreferences类来轻松实现。 SharedPreferences是安卓平台的一个轻量级类。采用 SharedPreferences进行数据存储是很方便的。

 


  
  1. public class LoginCheckActivity extends Activity implements OnClickListener{
  2. //登录按钮
  3. private Button loginButton;
  4. //账号文本框
  5. private EditText accountEditText;
  6. //密码文本框
  7. private EditText passwordEditText;
  8. //账号
  9. private String account;
  10. //密码
  11. private String password;
  12. private String accountValue;
  13. private String passwordValue;
  14. //进度条
  15. private ProgressDialog pd = null;
  16. //记住账号的CheckBox
  17. private CheckBox savedAccountCheckBox;
  18. //自动登录的CheckBox
  19. private CheckBox autoLoginCheckBox;
  20. //SharePreferences对象,用于记住账号
  21. private SharedPreferences sp;
  22. //记住账号的标志常数
  23. private final String MAK = "innoview";
  24. @SuppressWarnings("deprecation")
  25. @Override
  26. protected void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. //设置标题不显示
  29. requestWindowFeature(Window.FEATURE_NO_TITLE);
  30. setContentView(R.layout.login);
  31. //账号的文本框
  32. accountEditText = (EditText)this.findViewById(R.id.et_account);
  33. //密码的文本框
  34. passwordEditText = (EditText)this.findViewById(R.id.et_password);
  35. //保存账号的CheckBox
  36. savedAccountCheckBox = (CheckBox)findViewById(R.id.cb_savedAccount);
  37. //自动登录的CheckBox
  38. autoLoginCheckBox = (CheckBox)findViewById(R.id.cb_autoLogin);
  39. //获取保存在SharePreferences里面的账号信息,实现自动登录
  40. sp = getSharedPreferences("accountInfo",Context.MODE_WORLD_READABLE);
  41. if(sp.getBoolean("ISCHECK", false)){
  42. savedAccountCheckBox.setChecked(true);
  43. try{
  44. accountValue = sp.getString("ACCOUNTVALUE","");
  45. System.out.println("<<<<<<<<<<<<"+"账号"+accountValue);
  46. }catch (Exception e) {
  47. // TODO: handle exception
  48. }
  49. accountEditText.setText(account);
  50. try{
  51. passwordValue = sp.getString("PASSWORDVALUE","");
  52. System.out.println("<<<<<<<<<<<<"+"密码"+passwordValue);
  53. }catch (Exception e) {
  54. // TODO: handle exception
  55. }
  56. passwordEditText.setText(password);
  57. if(sp.getBoolean("AUTO_ISCHECK", false)){
  58. autoLoginCheckBox.setChecked(true);
  59. initLogin();
  60. }
  61. }
  62. savedAccountCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  63. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  64. if (savedAccountCheckBox.isChecked()) {
  65. System.out.println("记住账号框未选中状态");
  66. sp.edit().putBoolean("ISCHECK", true).commit();
  67. }else {
  68. System.out.println("记住账号框未选中");
  69. sp.edit().putBoolean("ISCHECK", false).commit();
  70. }
  71. }
  72. });
  73. autoLoginCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  74. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  75. if (autoLoginCheckBox.isChecked()) {
  76. System.out.println("自动登录功能以启用");
  77. sp.edit().putBoolean("AUTO_ISCHECK", true).commit();
  78. } else {
  79. System.out.println("自动登录已关闭");
  80. sp.edit().putBoolean("AUTO_ISCHECK", false).commit();
  81. }
  82. }
  83. });
  84. loginButton = (Button)findViewById(R.id.bt_login);
  85. loginButton.setOnClickListener(this);
  86. }
  87. /**
  88. * 重载的按钮点击事件
  89. */
  90. @Override
  91. public void onClick(View v) {
  92. switch (v.getId()) {
  93. case R.id.bt_login:
  94. initLogin();
  95. break;
  96. default:
  97. break;
  98. }
  99. }
  100. public void initLogin(){
  101. //显示进度条
  102. pd = new ProgressDialog(this);
  103. pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  104. pd.setMessage("数据加载...");
  105. pd.show();
  106. account = accountEditText.getText().toString();
  107. password = passwordEditText.getText().toString();
  108. if(savedAccountCheckBox.isChecked())
  109. {
  110. Editor editor = sp.edit();
  111. try {
  112. editor.putString("ACCOUNTVALUE", account);
  113. System.out.println("<<<<<<<<"+"账号"+account);
  114. } catch (Exception e) {
  115. Toast.makeText(LoginCheckActivity.this,"账号保存异常",Toast.LENGTH_SHORT).show();
  116. e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
  117. }
  118. try {
  119. editor.putString("PASSWORDVALUE", password);
  120. System.out.println("<<<<<<<<"+"密码"+password));
  121. } catch (Exception e) {
  122. Toast.makeText(LoginCheckActivity.this,"密码保存异常",Toast.LENGTH_SHORT).show();
  123. e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
  124. }
  125. editor.commit();
  126. }
  127. loginCheck(account, password);
  128. }
  129. /**
  130. * 登录验证
  131. * @param account 账号(学号)
  132. * @param password 密码
  133. */
  134. public void loginCheck(String account, String password){
  135. if(account.equals("admin")&&password.equals("123")){
  136. Intent intent = new Intent(LoginCheckActivity.this,MainActivity.class);
  137. startActivity(intent);
  138. LoginCheckActivity.this.finish();
  139. }
  140. } }


 

 

 

 

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/50182777

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。