第四十四篇--做一个简单的QQ登录界面
功能:输入用户名和密码,正确,显示登录成功,为空的话,提示用户名和密码不能为空,还有记住密码功能。
MainActivity.java
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.aimee.android.play.qqlogin; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStreamReader; import static android.text.TextUtils.isEmpty; public class MainActivity extends AppCompatActivity { private EditText mEtnumber; private EditText mEtPasswd; private CheckBox mCbRemember; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mEtnumber = findViewById(R.id.et_qq); mEtPasswd = findViewById(R.id.et_password); mCbRemember = findViewById(R.id.cb_remember); //1.找到界面上的控件 //2.点击按钮,将用户输入的用户名和密码保存到文件当中 //3.如果说下次启动app,那么就从文件当中读取出来显示到编辑框 restoreInfo(); } /** * 根据原来保存的文件信息,把QQ号码和密码信息显示到界面 * */ private void restoreInfo() { File file = new File(this.getFilesDir(), "info.txt"); //如果文件存在并且有内容就读取出来 if (file.exists() && file.length() > 0){ try { FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String info = br.readLine(); String qq = info.split("##")[0]; String pwd = info.split("##")[1]; mEtnumber.setText(qq); mEtPasswd.setText(pwd); } catch (Exception e) { e.printStackTrace(); } } } /** * 登录按钮的点击事件 * * @param view * */ public void login(View view) { String qq = mEtnumber.getText().toString().trim(); String password = mEtPasswd.getText().toString().trim(); if (isEmpty(qq) || isEmpty(password)){ Toast.makeText(this,"用户名和密码不能为空",Toast.LENGTH_SHORT).show(); return; }else { //判断是否需要记录用户名和密码 if (mCbRemember.isChecked()){ // Toast.makeText(this,this.getExternalFilesDir(null).getAbsolutePath(),Toast.LENGTH_SHORT).show(); //被选中的状态,需要记录用户名和密码 File file = new File(this.getFilesDir(),"info.txt"); try { FileOutputStream fos = new FileOutputStream(file); String info = qq + "##" + password; fos.write(info.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } //模拟登录,当前输入的用户名和密码联网操作对比云端数据库是否匹配 if ("10000".equals(qq) && "123456".equals(password)){ Toast.makeText(this,"登录成功",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this,"登录失败",Toast.LENGTH_SHORT).show(); } } } }
activity_main.xml
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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=".MainActivity"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="108dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@mipmap/qq" /> <EditText android:id="@+id/et_qq" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="32dp" android:layout_marginEnd="8dp" android:ems="10" android:hint="请输入QQ号码" android:gravity="center" android:inputType="textPersonName" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/imageView" /> <EditText android:id="@+id/et_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="30dp" android:layout_marginEnd="8dp" android:ems="10" android:hint="请输入密码" android:gravity="center" android:inputType="textPassword" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/et_qq" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="88dp" android:layout_marginEnd="8dp" android:onClick="login" android:text="登录" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/et_password" /> <CheckBox android:id="@+id/cb_remember" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="16dp" android:layout_marginEnd="8dp" android:text="记住密码" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/et_password" /> </android.support.constraint.ConstraintLayout>
提醒getFilesDir()路径下面的文件可能没有执行权限,可以试试采用adb shell的方式,输入su请求root权限,手机会弹出是否允许,记住不要看错了,默认可是拒绝,本人就是手快点了个永久拒绝。