创建一个Android应用程序。当分别输入用户名"admin"与密码"123", 并点击“登录”按钮,则进入第二个窗体BActivity。(如果用户名或密码不输入“admin”或“123”,则提示出错)
如果点击了“保存密码”复选按钮,并点击“登录”按钮,则也是进入上面右边第二个窗体,同时把用户名与密码写入内部存储器,如保存至文件 data.txt。此时,把系统退掉之后重新打开 该应用,则系统直接跳过用户名与密码输入界面,直接进入第二个窗体,并显示上次登陆时间时间。在第二个窗体中,如果点击“取消自动登陆”,则删除文件 data.txt,则当 该应用重新启动时,则重新进入第一个窗体等待用户名与密码的输入。
第一个窗体:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
tools:context="com.zhku.exp5_2.MainActivity">
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="用户名(admin)"
android:textSize="20sp"
android:singleLine="true"/>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="密码(123)"
android:textSize="20sp"
android:singleLine="true"/>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存密码"
android:textSize="20sp"/>
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登录"
android:textSize="20sp" />
</LinearLayout>
package com.zhku.exp5_2;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
private EditText username;
private EditText password;
private CheckBox checkbox;
private Button login;
private String loginTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//时间转换
SimpleDateFormat loginTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
final String date = loginTime.format(new Date()); //现在时间
File file = new File(getFilesDir().getParent()+"/files/data.txt");
if(file.exists()){
//跳转界面
Intent it = new Intent(MainActivity.this, BActivity.class);
Bundle bundle = new Bundle();
bundle.putString("loginTime", date);
it.putExtras(bundle);
startActivity(it);
}
setContentView(R.layout.activity_main);
username = (EditText) findViewById(R.id.username);
password = (EditText) findViewById(R.id.password);
checkbox = (CheckBox) findViewById(R.id.checkbox);
login = (Button) findViewById(R.id.login);
String name = username.getText().toString().trim();
String psw = password.getText().toString().trim();
//登录点击事件
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = username.getText().toString().trim();
String psw = password.getText().toString().trim();
if (name.equals("admin") && psw.equals("123")
|| checkbox.isChecked() && name.equals("admin") && psw.equals("123")) {
Intent it = new Intent(MainActivity.this, BActivity.class);
Bundle bundle = new Bundle();
it.putExtras(bundle);
startActivity(it);
finish();
} else {
Toast.makeText(MainActivity.this, "用户名或密码出错", Toast.LENGTH_SHORT).show();
}
}
});
checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (checkbox.isChecked()) {
String name = username.getText().toString().trim();
String psw = password.getText().toString().trim();
//时间转换
SimpleDateFormat loginTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String date = loginTime.format(new Date()); //现在时间
saveUserInfoFile(name,psw,date);
System.out.println("已记住密码");
if (checkbox.isChecked()){
checkbox.setChecked(true);
}
else {
checkbox.setChecked(false);
}
}
}
});
}
//获取信息,写入
private void getUserFromFile() {
String con;
String file_name = "data.txt";
FileInputStream fis;
try {
fis = openFileInput(file_name);
byte[] bf = new byte[fis.available()];
fis.read(bf);
fis.close();
con = new String(bf);//读出内容
String[] data = con.split(",");
//获取用户输入的用户名密码
username.setText(data[0]);
password.setText(data[1]);
loginTime = data[2];
} catch (Exception e) {
e.printStackTrace();
}
}
//保存数据,读出
private boolean saveUserInfoFile(String username, String password, String time) {
String filename = "data.txt";
String content = username + "," + password + "," + time;
FileOutputStream fos; //写入用户名,密码
try {
fos = openFileOutput(filename, MODE_PRIVATE);
fos.write(content.getBytes());
fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
第二个窗体:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
tools:context="com.zhku.exp5_2.BActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="我是登录成功后的窗口"
android:textSize="30sp"
android:textColor="#000000"/>
<TextView
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="15sp"/>
<Button
android:id="@+id/cacel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消自动登录"
android:textSize="20sp"/>
</LinearLayout>
package com.zhku.exp5_2;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.File;
public class BActivity extends AppCompatActivity {
private TextView show;
private Button cancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
show = (TextView)findViewById(R.id.show);
cancel = (Button)findViewById(R.id.cacel);
Intent it = getIntent();
Bundle bundle = it.getExtras();
String date = bundle.getString("loginTime");
it.putExtras(bundle);
show.setText("登录用户名:admin" +"\n"+"上次登录时间:"+date);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File file = new File(getFilesDir().getParent()+"/files/data.txt");
if(file.exists()){
deleteFile("data.txt");
}
}
});
}
}
实现效果:
未保存密码的登录:
保存密码后的登录:
点击第二个窗体中的取消自动登录按钮,重新启动则会显示未登录时的界面,如图一所示。