记住密码这个功能在很多的应用程序中都能见到,用得非常的平凡,也提供了很多的方便,但是个人认为,如果我们的应用程序涉及到数据安全度高的时候,这个功能就有安全隐患了,如银行的手机客户端,如果设置一个记住密码,万一不小心手机掉了,被别人捡到,就如同进入自家一样容易,那损失不可说了,心照不宣就行,呵呵!这些说的都是废话,下面具体来操作是怎样实现这一功能:
1、创建一个Android工程
2、在xml文件中将界面布局好,风格随意
3、编写代码实现,我这里使用的Android提供的SharedReference这个API
这个是我的界面,有点丑,做练习嘛,将就将就用
我将保存密码提取出来封装到一个Java类中的,LoginService.java
public class LoginService {
public static void saveUserInfo(Context context,String userName,String password){
//获取SharedReference
SharedPreferences sp=context.getSharedPreferences("config", Context.MODE_PRIVATE);
//获取SharedReference的编辑器
Editor editor=sp.edit();
//设置参数
editor.putString("userName", userName);
editor.putString("password", password);
//提交数据,相同与数据库的事务,保证数据存储成功
editor.commit();
}
}
在MainActivity.java 中
package com.tenghu.login.activity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
// 声明控件对象
private EditText userName, password;
private CheckBox checkBox;
private Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取控件对象
userName = (EditText) this.findViewById(R.id.username);
password = (EditText) this.findViewById(R.id.password);
checkBox = (CheckBox) this.findViewById(R.id.check_box);
login = (Button) this.findViewById(R.id.login);
// 获取SharedReference接口对象
SharedPreferences sp = this.getSharedPreferences("config",
Context.MODE_PRIVATE);
// 获取用户名和密码
String name = sp.getString("userName", "");
String pwd = sp.getString("password", "");
// 设置到文本框中
userName.setText(name);
password.setText(pwd);
// 如果获取到的值不为空
if (TextUtils.isEmpty(pwd) == false && TextUtils.isEmpty(pwd) == false) {
// 如果获取到的值等于预定的值,则提示登录成功,否则登录失败
if ("admin".equals(name) && "admin".equals(pwd)) {
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
// 为按钮绑定点击事件
login.setOnClickListener(new ClickListener());
}
/**
* 声明点击事件
*/
final class ClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// 获取用户名和密码
String name = userName.getText().toString();
String pwd = password.getText().toString();
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
Toast.makeText(MainActivity.this, "用户名或密码不能为空",
Toast.LENGTH_SHORT).show();
} else {
if (checkBox.isChecked()) {
Toast.makeText(MainActivity.this, "保存密码成功",
Toast.LENGTH_SHORT).show();
LoginService.saveUserInfo(MainActivity.this, name, pwd);
}
if ("admin".equals(name) && "admin".equals(pwd)) {
Toast.makeText(MainActivity.this, "登录成功",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "登录失败",
Toast.LENGTH_SHORT).show();
}
}
}
}
}
这样就实现了记住密码的功能