第四十四篇--做一个简单的QQ登录界面

功能:输入用户名和密码,正确,显示登录成功,为空的话,提示用户名和密码不能为空,还有记住密码功能。

MainActivity.java

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();
            }
        }
    }
}
View Code

 

activity_main.xml

<?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>
View Code

 

提醒getFilesDir()路径下面的文件可能没有执行权限,可以试试采用adb shell的方式,输入su请求root权限,手机会弹出是否允许,记住不要看错了,默认可是拒绝,本人就是手快点了个永久拒绝。

posted @ 2019-04-10 08:33  o云淡风轻o  阅读(843)  评论(0编辑  收藏  举报