Android实现自动登录的技巧:数据库存储 (android 数据库 自动登录)

随着手机的普及,人们已经离不开手机了。手机APP成为人们生活中必不可少的工具之一。其中,很多APP都需要用户进行登录才能使用,比如微信、QQ、支付宝等等。然而,频繁的登录操作可能会让用户感到烦躁,而自动登录的功能就成为了很多用户的需求之一。

那么,如何实现自动登录呢?在Android平台下,我们可以使用数据库存储来实现这一功能。下面是具体实现方法。

一、创建数据库和表

在Android中,我们可以使用SQLite数据库进行数据存储。所以,首先需要创建一个SQLiteOpenHelper类,继承自SQLiteOpenHelper类,并实现onCreate()和onUpgrade()方法。在onCreate()方法中,我们可以创建数据库表和字段,代码如下:

public class DBHelper extends SQLiteOpenHelper{

private static final int VERSION=1;

private static final String DB_NAME=”user_db”;

private static final String TABLE_NAME=”user”;

private static final String ID=”_id”;

private static final String NAME=”name”;

private static final String PASSWORD=”password”;

private static final String AUTO_LOGIN=”auto_login”;

public DBHelper(Context context){

super(context,DB_NAME,null,VERSION);

}

@Override

public void onCreate(SQLiteDatabase sqLiteDatabase) {

String sql=”create table “+TABLE_NAME+”(“+ID+” integer primary key autoincrement,”+NAME+” varchar(20),”+PASSWORD+” varchar(20),”+AUTO_LOGIN+” bit)”;

sqLiteDatabase.execSQL(sql);

}

@Override

public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {

}

}

在上面的代码中,我们创建了一个名为user_db的数据库,并创建了一个名为user的表,并添加了四个字段:_id(id自增长字段)、name(用户名)、password(密码)和auto_login(是否自动登录)。

二、存储用户信息

用户登录成功后,我们需要将用户信息存储到数据库中。此时,需要先将用户输入的用户名和密码进行加密处理,然后再将它们存储到数据库中。

加密处理可以使用MD5算法进行,需要在代码中额外添加一个MD5Utils类,代码如下:

public class MD5Utils {

public static String md5(String input) {

try {

// Create MD5 Hash

MessageDigest digest = java.security.MessageDigest

.getInstance(“MD5”);

digest.update(input.getBytes());

byte messageDigest[] = digest.digest();

// Create Hex String

StringBuilder hexString = new StringBuilder();

for (int i = 0; i

String h = Integer.toHexString(0xFF & messageDigest[i]);

while (h.length()

h = “0” + h;

hexString.append(h);

}

return hexString.toString();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

return “”;

}

}

在加密的基础上,我们可以在登录成功时将用户信息存储到数据库中,代码如下:

public class LoginActivity extends AppCompatActivity {

private EditText et_userName;

private EditText et_password;

private CheckBox cb_autoLogin;

private Button btn_login;

private DBHelper dbHelper;

private SQLiteDatabase db;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

et_userName=findViewById(R.id.et_username);

et_password=findViewById(R.id.et_password);

cb_autoLogin=findViewById(R.id.cb_autologin);

btn_login=findViewById(R.id.btn_login);

dbHelper=new DBHelper(this);

db=dbHelper.getWritableDatabase();

btn_login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

String name=et_userName.getText().toString();

String password=MD5Utils.md5(et_password.getText().toString());

ContentValues values=new ContentValues();

values.put(“name”,name);

values.put(“password”,password);

if(cb_autoLogin.isChecked()){

values.put(“auto_login”,true);

}else{

values.put(“auto_login”,false);

}

db.insert(“user”,null,values);

Intent intent=new Intent(LoginActivity.this,MnActivity.class);

startActivity(intent);

finish();

}

});

}

}

在上面的代码中,我们使用ContentValues对象保存要存储的用户信息,然后使用insert()方法将信息存储到数据库中,并在Intent跳转到MnActivity界面。

三、自动登录的实现

当用户再次打开APP时,我们需要通过数据库中的数据来判断是否需要自动登录。而自动登录的实现也很简单,只需要在MnActivity的onCreate()方法中判断用户是否需要自动登录,代码如下:

public class MnActivity extends AppCompatActivity {

private DBHelper dbHelper;

private SQLiteDatabase db;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_mn);

dbHelper=new DBHelper(this);

db=dbHelper.getWritableDatabase();

Cursor cursor=db.rawQuery(“select * from user where auto_login=?”,new String[]{“true”});

if(cursor.moveToFirst()){

String name=cursor.getString(cursor.getColumnIndex(“name”));

String password=cursor.getString(cursor.getColumnIndex(“password”));

Intent intent=new Intent(MnActivity.this,AutoLoginActivity.class);

intent.putExtra(“name”,name);

intent.putExtra(“password”,password);

startActivity(intent);

finish();

}

cursor.close();

}

}

在MnActivity的onCreate过程中,我们首先调用DBHelper的getWritableDatabase()方法获取到SQLite数据库,然后使用rawQuery()方法查询数据库中auto_login字段为true的记录。如果有记录,说明需要自动登录,此时我们可以直接跳转到AutoLoginActivity界面,并将用户名和密码传递过去。

AutoLoginActivity界面的代码如下:

public class AutoLoginActivity extends AppCompatActivity {

private TextView tv_userName;

private TextView tv_password;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_autologin);

tv_userName=findViewById(R.id.tv_username);

tv_password=findViewById(R.id.tv_password);

String name=getIntent().getStringExtra(“name”);

String password=getIntent().getStringExtra(“password”);

tv_userName.setText(name);

tv_password.setText(password);

}

}

在上面的代码中,我们可以通过getIntent()方法获取到上一个Activity传递过来的参数,并显示在TextView上。

本文介绍了Android实现自动登录的技巧,通过使用SQLite数据库进行存储来实现自动登录功能。使用此方法不仅可以方便用户的操作,还可以提高用户体验,从而增加用户粘性。如果需要实现自动登录功能,可以参考本文中的代码实现。


数据运维技术 » Android实现自动登录的技巧:数据库存储 (android 数据库 自动登录)