Android studio自动登录和记住密码的实现

这篇具有很好参考价值的文章主要介绍了Android studio自动登录和记住密码的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android studio自动登录和记住密码的实现



前言

大家好,我是oy,今天介绍一下在登录页面中如何实现自动登录及记住密码。


一、效果

Android studio自动登录和记住密码的实现

二、设计思路

  1. 使用sharedPreferenced存储用户账号和密码,以及是否记住密码和自动登录。
  2. 记住密码和自动登录按钮都采用checkButton,使用checkButton的OnCheckedChangeListener监听。

三、知识点介绍

1. SharedPreferenced

  1. sharedPreferenced是Android中存储数据的一种方式。采用键值对的方式存储数据。

  2. 使用过程:
    ① 获取sharedPreferenced对象。
    ② 调用edit()获取SharePreferenced.Editor对象。
    ③ 调用putBoolean()…等向SharePreferenced.Editor对象添加数据。
    ④ 调用apply()提交数据。

  3. 例子

    // 存数据
    SharedPreferences sp = getSharedPrefrences("data", MODE_PRIVATE);// 获取sharedPreferenced对象
    SharedPreferences.Editor ed = sp.edit();// 获取SharePreferenced.Editor对象
    ed.putString("name", "Sam");// 向SharePreferenced.Editor对象添加数据
    ed.apply();// 调用apply()提交数据,就是保存的意思
    
    // 取数据
    SharedPrefrences sp = getSharedPrefrences("data",MODE_PRIVATE);
    String name = sp.getString("name","");// 取数据
    

2. checkButton就不介绍了

四、自动登录及记住密码实现

  1. 分为两个activity,mainActivity是登录页面,homeActivity是登录成功页面。
    HomeActivity.java代码

    public class HomeActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
      }
    }
    

    activity_home.xml代码

    	<?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	xmlns:app="http://schemas.android.com/apk/res-auto"
    	xmlns:tools="http://schemas.android.com/tools"
    	android:layout_width="match_parent"
    	android:layout_height="match_parent"
    	tools:context=".HomeActivity">
    
    	<TextView
        	android:id="@+id/tv_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text"
        android:textSize="26sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    MainActivity.java代码

    	private AppCompatEditText edit_account,  edit_password;
    	private CheckBox cb_remember, cb_autologin;
    	private SharedPreferences sharedPreferences;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
        	super.onCreate(savedInstanceState);
        	setContentView(R.layout.activity_main);
        	bindView();
        	initView();
    	}
    
    	/**
     	*用于绑定控件id的方法
     	*/
    	protected void bindView() {
        	edit_account = findViewById(R.id.edit_account);
        	edit_password = findViewById(R.id.edit_password);
        	cb_remember = findViewById(R.id.cb_remember);
        	cb_remember.setOnCheckedChangeListener(this);
        	cb_autologin = findViewById(R.id.cb_autologin);
        	cb_autologin.setOnCheckedChangeListener(this);
        	Button btn_login = findViewById(R.id.btn_login);
        	btn_login.setOnClickListener(this);
        	// 获取SharedPreferences的实例
        	sharedPreferences = this.getSharedPreferences("loginInfo", MODE_PRIVATE);
    	}
    
    	/**
     	* 用于初始化界面
     	*/
    	protected void initView() {
    		// 获取sharedPreferences中remember对于的boolean值,true表示记住密码
        	if (sharedPreferences.getBoolean("remember", false)) {
            	cb_remember.setChecked(true);
            	edit_account.setText(sharedPreferences.getString("account", ""));
            	edit_password.setText(sharedPreferences.getString("password",""));
            	autologin();
        	}
    	}
    
    	// 登录按钮的逻辑
    	@Override
    	public void onClick(View view) {
        	// 定义账号和密码的字符串
        	String account, password;
        	// 判断账号是否为空
        	if (edit_account.getText() == null) {
            	showToast("账号为空,请重新输入");
            	return;
        	}
        	// 判断密码是否为空
        	if (edit_password.getText() == null) {
            	showToast("密码为空,请重新输入");
            	return;
        	}
        	// 账号和密码都不为空,进行密码账号校验
        	account = edit_account.getText().toString().trim();
        	password = edit_password.getText().toString().trim();
        	// 此处固定了账号和密码
        	if (account.equals("admin") && password.equals("12345")) {
            	if (cb_remember.isChecked()) {
                	SharedPreferences.Editor editor = sharedPreferences.edit();
                	editor.putString("account", account);
                	editor.putString("password", password);
                	editor.apply();
            	}
            	showToast("登录成功");
            	Intent intent = new Intent(MainActivity.this, HomeActivity.class);// 跳转到主界面
            	startActivity(intent);
    //            finish();
        	}
    	}
    
    	/**
     	* 自动登录逻辑
     	*/
    	private void autologin() {
        	// 获取sharedPreferences中autologin对于的boolean值, true表示记住密码
        	if (sharedPreferences.getBoolean("autologin", false)) {
            	// 勾选自动登录
            	cb_autologin.setChecked(true);
            	// 跳转页面
           		Intent intent = new Intent(MainActivity.this, HomeActivity.class);// 跳转到主界面
            	startActivity(intent);
        	}
    	}
    
    	/**
     	* 用于显示toast弹出消息
     	* @param text 需要显示的文本
     	*/
    	private void showToast(final String text) {
        	Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
    	}
    
    	// checkButton按钮的选中监听事件,compoundButton指的是checkButton控件, isChecked指的是是否勾选
    	@SuppressLint("NonConstantResourceId")
    	@Override
    	public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
        	switch (compoundButton.getId()) {
            	case R.id.cb_remember:
                	if (isChecked) {
                    	sharedPreferences.edit().putBoolean("remember", true).apply();
                	} else {
                    	sharedPreferences.edit().putBoolean("remember", false).apply();
                	}
                	break;
            	case R.id.cb_autologin:
                	if (isChecked) {
                    	sharedPreferences.edit().putBoolean("autologin", true).apply();
                	} else {
                    	sharedPreferences.edit().putBoolean("autologin", false).apply();
                	}
                	break;
        	}
    	}
    

    sharedPreferenced存储是位于data/data/包名/shared_prefs下。是xml文件存储键值对。
    比如

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
    	<boolean name="remember" value="true" />
    	<boolean name="autologin" value="true" />
    	<string name="password">12345</string>
    	<string name="account">admin</string>
    </map>
    

总结与补充

主要介绍了在登录页面中如何实现自动登录和记住密码的功能,简单介绍了sharedPreferences的使用方法,这也是Android中存储数据常用的方法之一。Android存储还有sqlite数据库存储,在另一篇文章 " Android studio登录注册的实现及介绍 " 中有讲到。文章来源地址https://www.toymoban.com/news/detail-421240.html

到了这里,关于Android studio自动登录和记住密码的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 22.实战演练--记住密码和登录状态

    在登录注册案例的基础上,实现一个相对完整的登录注册模块 (1).记住密码 (2).记住登录状态(自动登录) (3).注册成功,登录成功,退出登录时的页面跳转

    2024年01月16日
    浏览(28)
  • 微信小程序记住密码,让登录解放双手

    密码是用户最重要的数据,也是系统最需要保护的数据,我们在登录的时候需要用账号密码请求登录接口,如果用户勾选记住密码,那么下一次登录时,我们需要将账号密码回填到输入框,用户可以直接登录系统。我们分别对这种流程进行说明: 记住密码 在请求登录接口成

    2024年02月02日
    浏览(30)
  • Android Studio 制作微信,登入界面,输入密码界面,跳转手机登录界面,以及聊天界面

    2.打开Android Studio。 3.选择 \\\"Create New Project\\\"。 4.在 \\\"Create New Project\\\" 对话框中,输入项目名称、选择存储位置等信息。 5.选择最低支持的Android版本,并选择一个适合的活动模板(例如,Empty Activity)。 6.点击 \\\"Finish\\\" 创建新的Android项目。 8.打开 \\\"activity_main.xml\\\" 文件,该文件用于定

    2024年02月07日
    浏览(29)
  • 利用cookie实现记住密码功能

    登陆界面:login.jsp form表单 form action=\\\"dologin.jsp\\\" method=\\\"post\\\"         用户名:input type=\\\"text\\\" name=\\\"uname\\\"/         br/         密码:input type=\\\"password\\\" name=\\\"upwd\\\" /         br/         记住密码:         input type=\\\"checkbox\\\" name=\\\"checkpwd\\\" value=\\\"1\\\"/记住密码         br/       

    2024年02月09日
    浏览(31)
  • Android Studio——实现登录界面

    Android Studio——实现登录界面 在移动应用开发中,登录界面是一种常见的设计需求。通过使用Android Studio,我们可以轻松实现一个简单且美观的登录界面。本文将介绍如何使用Android Studio创建一个登录界面,并提供相应的源代码。 步骤1:创建新项目 首先,打开Android Studio并创

    2024年02月08日
    浏览(23)
  • 如何用Android Studio实现登录跳转

    这个项目是我很早的时候写的,现在将其发上来供大家参考。可能存在一些不规范的问题,如有不对,欢迎批评指正。首先需要安装配置好Java开发环境,并选择任意一款Android开发工具进行编程,推荐下载安装Android Studio软件进行程序开发。在开始进行Android编程开发之前需要

    2024年02月03日
    浏览(22)
  • Ubuntu18.04 取消开机密码 实现自动登录

    因为要把Ubuntu设备作为服务器,实现开机自动运行服务程序,所以需要取消开机密码 实现自动登录。 1、点击桌面右上角向下的箭头,点击设置图标 2、点击右上角的 Unlock 3、在弹出的窗口中输入系统登录密码,点击右下角 Authenticate  4、把自动登录设置为ON,关闭窗口,再开

    2024年02月13日
    浏览(27)
  • 使用 Sa-Token 实现 [记住我] 模式登录、七天免登录

    如图所示,一般网站的登录界面都会有一个 [记住我] 按钮,当你勾选它登录后,即使你关闭浏览器再次打开网站,也依然会处于登录状态,无须重复验证密码: 本文将详细介绍在 Sa-Token中,如何做到以下登录模式: 记住我登录:登录后关闭浏览器,再次打开网站登录状态依

    2024年02月09日
    浏览(27)
  • 学会在Android Studio使用窗口跳转实现用户登录

    基于 Empty Activity 模板创建安卓应用 将背景图片 background.png 拷贝到 drawable 目录   基于 Empty Activity 模板创建 LoginActivity ,要生成对应的布局文件,并且要设置为启动Activity 切换到Design视图查看预览效果 (1)输入用户名与密码正确的情况 - 用户名:howard - 密码:903213 (2)输入

    2023年04月15日
    浏览(44)
  • Android Studio|使用SqLite实现一个简单的登录注册功能

    本学期学习了Android Studio这门课程,本次使用Android Studio自带的sqlite数据库实现一个简单的登录注册功能。 目录 一、了解什么是Android Studio? 二、了解什么是sqlite? 三、创建项目文件  四、创建活动文件和布局文件。 五、创建数据库,连接数据库  六、创建实体类,实现注

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包