Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android系列之实现自动登录和记住密码

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

作者头像
SmileNicky
发布于 2022-05-07 07:15:51
发布于 2022-05-07 07:15:51
1.6K00
代码可运行
举报
文章被收录于专栏:Nicky's blogNicky's blog
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class LoginCheckActivity extends Activity implements OnClickListener{
	//登录按钮
	private Button loginButton;
	
	//账号文本框
	private EditText accountEditText;
	//密码文本框
	private EditText passwordEditText;
	
	//账号
	private String account;
	//密码
	private String password;
	
	private String accountValue;
	private String passwordValue;
		
	//进度条
	private ProgressDialog pd = null;
	
	//记住账号的CheckBox
	private CheckBox savedAccountCheckBox;
	//自动登录的CheckBox
	private CheckBox autoLoginCheckBox;
	
	//SharePreferences对象,用于记住账号
	private SharedPreferences sp;
	
	//记住账号的标志常数
	private final String MAK = "innoview";
	
	
	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//设置标题不显示
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.login);
		
		//账号的文本框
		accountEditText = (EditText)this.findViewById(R.id.et_account);
		//密码的文本框
		passwordEditText = (EditText)this.findViewById(R.id.et_password);
		//保存账号的CheckBox
		savedAccountCheckBox = (CheckBox)findViewById(R.id.cb_savedAccount);
		//自动登录的CheckBox
		autoLoginCheckBox = (CheckBox)findViewById(R.id.cb_autoLogin);
		//获取保存在SharePreferences里面的账号信息,实现自动登录
		sp = getSharedPreferences("accountInfo",Context.MODE_WORLD_READABLE);
		
		if(sp.getBoolean("ISCHECK", false)){
			
			savedAccountCheckBox.setChecked(true);
			
			try{
				 accountValue = sp.getString("ACCOUNTVALUE","");
				 System.out.println("<<<<<<<<<<<<"+"账号"+accountValue);
			}catch (Exception e) {
				// TODO: handle exception
			}
			
			accountEditText.setText(account);
			
			try{
				 passwordValue = sp.getString("PASSWORDVALUE","");
				 System.out.println("<<<<<<<<<<<<"+"密码"+passwordValue);
            
			}catch (Exception e) {
				// TODO: handle exception
			}
			
			passwordEditText.setText(password);
			
			if(sp.getBoolean("AUTO_ISCHECK", false)){
				 autoLoginCheckBox.setChecked(true);
				 initLogin();
		    }
			
		}
		
		savedAccountCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
			if (savedAccountCheckBox.isChecked()) {
			                     
				System.out.println("记住账号框未选中状态");
				sp.edit().putBoolean("ISCHECK", true).commit();

			}else {

				System.out.println("记住账号框未选中");
				sp.edit().putBoolean("ISCHECK", false).commit();

			}

			}
		});
		
		autoLoginCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
	        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
	        	if (autoLoginCheckBox.isChecked()) {
	        		System.out.println("自动登录功能以启用");
	        		sp.edit().putBoolean("AUTO_ISCHECK", true).commit();

	        	} else {
	        		System.out.println("自动登录已关闭");
	        		sp.edit().putBoolean("AUTO_ISCHECK", false).commit();
	        	}
	        }
		});
		
		
		loginButton = (Button)findViewById(R.id.bt_login);
		loginButton.setOnClickListener(this);
		
	}
	
	/**
	 * 重载的按钮点击事件
	 */
	@Override
	public void onClick(View v) {

		switch (v.getId()) {
		case R.id.bt_login:
			initLogin();
			break;
		default:
			break;
		}
	}   
	
	public void initLogin(){
		//显示进度条
		pd = new ProgressDialog(this);
		pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		pd.setMessage("数据加载...");
		pd.show();
		
		account = accountEditText.getText().toString();
		password = passwordEditText.getText().toString();
		
		if(savedAccountCheckBox.isChecked())
		{
		 
		 Editor editor = sp.edit();

		    try {
	            editor.putString("ACCOUNTVALUE", account);
		        System.out.println("<<<<<<<<"+"账号"+account);
		    } catch (Exception e) {
		        Toast.makeText(LoginCheckActivity.this,"账号保存异常",Toast.LENGTH_SHORT).show();
		        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
		    }
		    
		    try {
	                 editor.putString("PASSWORDVALUE", password);
		        System.out.println("<<<<<<<<"+"密码"+password));
		    } catch (Exception e) {
		        Toast.makeText(LoginCheckActivity.this,"密码保存异常",Toast.LENGTH_SHORT).show();
		        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
		    }
		    
		   editor.commit();
		}

		
		loginCheck(account, password);
	}
	
	
	/**
	 * 登录验证
	 * @param account 账号(学号)
	 * @param password 密码
	 */
	public void loginCheck(String account, String password){
		
		if(account.equals("admin")&&password.equals("123")){
			Intent intent = new Intent(LoginCheckActivity.this,MainActivity.class);
			startActivity(intent);
			LoginCheckActivity.this.finish();
		}

	}                                                                                                                         }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SharedPreferences实现记住密码的登录界面-Android
在Android中,存储数据主要采用了3种方案,分别为文件存储, SharedPreferences存储以及数据库存储,当然,数据也可以保存在sd卡里,但相比上面这几种,可能就要麻烦点了,而且安全性也会降低。
Petterp
2022/02/09
2.1K0
SharedPreferences实现记住密码的登录界面-Android
android学习笔记----模拟登陆界面(文件和SharedPreferences存储)
SharedPreferences存储源码(QQlogin2):https://github.com/liuchenyang0515/QQlogin2
砖业洋__
2023/05/06
3240
android学习笔记----模拟登陆界面(文件和SharedPreferences存储)
Android文件读写和使用SharedPreferences储存数据
程序的终归目的还是操作数据来达到实现一些特定功能,在Android中,我们可以通过操作文件或者使用SharedPreferences还有数据库来保存一些数据。首先来看一下Android文件的读写:
指点
2019/01/18
2K0
Android文件读写和使用SharedPreferences储存数据
第一行代码——数据存储
Context类提供了一个openFileOutput()方法,将数据存到指定文件中。返回一个FileOutpueStream对象。 两个参数: 文件名,不包含路径,因为所有文件都默认存储到/data/data/<package name>/file/目录下; 文件的操作模式:MODE_PRIVATE(默认)和MPDE_APPEND。 MODE_PRIVATE:表示当指定相同文件名的时候,所写入的内容覆盖原文件。 MPDE_APPEND:追加。
SakuraTears
2022/01/13
8460
Android使用SharedPreferences保存账号密码
有很多的应用都会有保存密码和账号的功能,比如QQ。接下来就讲讲使用SharedPreferences来保存密码和账号,也许有些人会考虑的数据库,但是我个人认为对于保存简单的数据,使用的数据库就大材小用了,SharedPreferences比较轻量级
夜雨飘零
2020/05/06
2.4K0
AndroidStudio制作登录和注册功能的实现,界面的布局介绍
大家好,我是 Vic,今天给大家带来AndroidStudio制作登录和注册功能的实现,界面的布局介绍的概述,希望你们喜欢
达达前端
2019/07/03
12.6K2
AndroidStudio制作登录和注册功能的实现,界面的布局介绍
教育系统APP(二)
当我们面临制作登录和注册功能的实现时,我们需要先设计登录界面的布局和注册界面的布局,做到有完整的思路时才开始实现其功能效果会更好。
达达前端
2020/01/15
1.1K0
教育系统APP(二)
简单的安卓网络音乐视频播放器app
学习安卓开发时做的一个小demo,知识点包括:intent、UI、界面切换、API调用、播放器调用、内部存储、list控件等。
小锋学长生活大爆炸
2022/05/09
2K0
简单的安卓网络音乐视频播放器app
Android数据储存之SharedPreferences-记住密码案例
---- 简介 SharedPreferences是一种轻型的数据存储方式,通过键值对的形式保存数据,存储数据是以xml文件形式存储,文件存放在/data/data//shared_prefs目录下,一般用来存储一些简单的配置信息。 SharedPreferences操作模式 MODE_PRIVATE:默认的操作模式,同名文件内容会被覆盖。 MODE_APPEND:则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。 初始化SharedPreferences Activity类中的getP
sr
2019/05/23
1K0
Android注册登录页面
需求 主题:网抑云 用户注册 (账号 密码 性别 爱好…) (注册完成跳转到注册成功页面) 注册成功页面 (显示用户注册的详细信息) (可以跳转到登录页面) 登录页面 (使用用户注册时的账号密码登录) (进行判断) 登录成功页面 (欢迎XXX(用户注册时的昵称)先生/女士 分析 不能使用回车多行输入 账号(不可为空) 密码(不可为空)(隐藏的) 确认密码(比对) 昵称(不可为空) 性别(单选) 爱好(多选) 简介 简介可以为空,其他全部非空 inputTy
是阿超
2021/10/15
10.1K0
AndroidStudio制作“我”的界面,设置,修改密码,设置密保和找回密码
大家好,我是 Vic,今天给大家带来AndroidStudio制作“我”的界面,设置,修改密码,设置密保和找回密码的概述,希望你们喜欢
达达前端
2019/07/03
2.1K0
[android] 手机卫士来电显示号码归属地
详细内容可以参考这篇博文:http://www.cnblogs.com/taoshihan/p/5331232.html
唯一Chat
2019/09/10
7620
[android] 手机卫士来电显示号码归属地
Android数据存储之SharePreferences简记
之前在项目中有个资料编辑功能,寻找了好久,最终决定使用SharePreferences,可惜当初学的太差,现在只好重新补救,将相关内容整理于此。
WindCoder
2018/09/20
2.2K0
Android数据存储之SharePreferences简记
安卓应用安全指南 5.1 创建密码输入界面
创建密码输入界面时,这里描述了安全性方面需要考虑的一些要点。 这里仅提及与密码输入有关的内容。 对于如何保存密码,未来会发布另一篇文章。
ApacheCN_飞龙
2022/12/01
1.2K0
安卓开发_数据存储技术_SharedPreferences类
SharedPreferences类 供开发人员保存和获取基本数据类型的键值对。 该类主要用于基本类型,例如:booleans,ints,longs,strings。在应用程序结束后,数据仍旧会保存。 有两种方式可以获得SharedPreferences对象 1、getSharedPreferences():  如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就是共享文件的名称。                 对于使用同一个名称获得的多个SharedPreferences引用,其指向同
听着music睡
2018/05/18
1.1K0
[android] 手机卫士关闭自动更新
获取SharedPreferences对象,通过getSharedPreferences()方法,参数:名称,模式
唯一Chat
2019/09/10
1.2K0
[android] 手机卫士保存安全号码
调用ListView对象的setOnItemClickListener()方法,设置条目的点击事件,参数:OnItemClickListener对象
唯一Chat
2019/09/10
6830
011android初级篇之android登录界面的设计
登录框的自动提示功能参考一下链接中的AutoCompleteTextView的使用
上善若水.夏
2018/09/28
2.6K0
3.数据存储
在内部文件的读取    **内部存储(internal storeage)      ram:运行时期的内存      (相当于电脑的内存)      rom;存储的内存     (相当于电脑的硬盘)    **外部存储(external storeage)  SD卡:相当于电脑的移动硬盘 * 2.2之前,sd卡路径:sdcard * 4.3之前,sd卡路径:mnt/sdcard * 4.3开始,sd卡路径:storage/sdcard * 所有存储设备,都会被划分成若干个区块,每个区块有固定的大小
六月的雨
2018/05/14
9660
Spring Boot + Android 实现登录功能
在移动互联网的今天,许多应用需要通过移动端实现与服务器的交互功能,其中登录是最常见且基础的一种功能。通过登录,用户可以获得独特的身份标识,从而访问特定的资源或服务。本篇博客将详细介绍如何使用 Spring Boot 和 Android 实现一个完整的登录功能,从后端 API 的构建到 Android 端的交互,旨在为读者提供一套完整的解决方案。
繁依Fanyi
2024/09/16
2630
相关推荐
SharedPreferences实现记住密码的登录界面-Android
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验